javax.xml.xquery.XQConnection Java Examples

The following examples show how to use javax.xml.xquery.XQConnection. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: ContextItemBinderTest.java    From intellij-xquery with Apache License 2.0 7 votes vote down vote up
@Before
public void setUp() throws Exception {
    config = mock(XQueryRunConfig.class);
    binderFactory = mock(TypeBinderFactory.class);
    connection = mock(XQConnection.class);
    expression = mock(XQPreparedExpression.class);
    binder = new ContextItemBinder(binderFactory, config) {
        @Override
        protected String readFile(String fileName) throws IOException {
            fileRead = true;
            return FILE_CONTENTS;
        }
    };
    typeBinder = mock(TypeBinder.class);
    given(binderFactory.getBinder(CONTEXT_ITEM_TYPE)).willReturn(typeBinder);
}
 
Example #2
Source File: VariablesBinderTest.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
@Before
public void setUp() throws Exception {
    binderFactory = mock(TypeBinderFactory.class);
    config = mock(XQueryRunConfig.class);
    extractor = mock(NameExtractor.class);
    connection = mock(XQConnection.class);
    expression = mock(XQPreparedExpression.class);
    typeBinder = mock(TypeBinder.class);
    binder = new VariablesBinder(binderFactory, config, extractor);
    variable = prepareVariable();
}
 
Example #3
Source File: ExpressionFactoryTest.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
@Before
public void setUp() throws XQException {
    config = mock(XQueryRunConfig.class);
    variablesBinder = mock(VariablesBinder.class);
    contextItemBinder = mock(ContextItemBinder.class);
    contentFactory = mock(XQueryContentFactory.class);
    connection = mock(XQConnection.class);
    expression = mock(XQPreparedExpression.class);
    given(connection.prepareExpression(any(InputStream.class))).willReturn(expression);
    factory = new ExpressionFactory(config, contentFactory, variablesBinder, contextItemBinder);
}
 
Example #4
Source File: SaxonSearcher.java    From tmxeditor8 with GNU General Public License v2.0 5 votes vote down vote up
public static ArrayList<String> sort(String xmlns, String fileName, String elementName, boolean isAsc)
		throws XQException {
	URI uri = new File(fileName).toURI();
	String uriPath = uri.getPath();

	ArrayList<String> rowIds = new ArrayList<String>();
	XQDataSource dataSource = new SaxonXQDataSource();

	XQConnection conn = dataSource.getConnection();
	String queryString = "for $file in doc(\'" + uriPath + "')/xliff/file,"
			+ " $tu in $file/body//trans-unit order by $tu/" + elementName + " " + (isAsc ? "" : "descending")
			+ " return <file original='{$file/@original}' tuid='{$tu/@id}'></file>";
	if (xmlns != null) {
		queryString = "declare default element namespace '" + xmlns + "';" + queryString;
	}
	XQExpression expression = conn.createExpression();
	XQSequence results = expression.executeQuery(queryString);
	while (results.next()) {
		Node node = results.getNode();
		String original = node.getAttributes().getNamedItem("original").getNodeValue();
		String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
		String rowId = RowIdUtil.getRowId(fileName, original, tuid);
		rowIds.add(rowId);
	}
	// 释放资源
	results.close();
	expression.close();
	conn.close();

	return rowIds;
}
 
Example #5
Source File: TextBinderTest.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
@Before
public void setUp() throws XQException {
    expression = mock(XQPreparedExpression.class);
    connection = mock(XQConnection.class);
    binder = new TextBinder();
    xqItemType = mock(XQItemType.class);
    given(connection.createTextType()).willReturn(xqItemType);
}
 
Example #6
Source File: AtomicValueBinderTest.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
@Before
public void setUp() throws XQException {
    expression = mock(XQPreparedExpression.class);
    connection = mock(XQConnection.class);
    binder = new AtomicValueBinder();
    xqItemType = mock(XQItemType.class);
    given(connection.createAtomicType(anyInt())).willReturn(xqItemType);
}
 
Example #7
Source File: ConnectionFactory.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
public XQConnection getConnection(XQDataSource dataSource) throws Exception {
    XQConnection connection;
    if (config.getDataSourceType().connectionPropertiesAreSupported()
            && config.getUsername() != null && config.getUsername().length() > 0) {
        connection = dataSource.getConnection(config.getUsername(), config.getPassword());
    } else {
        connection = dataSource.getConnection();
    }
    return connection;
}
 
Example #8
Source File: AttributeBinderTest.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
@Before
public void setUp() throws Exception {
    expression = mock(XQPreparedExpression.class);
    connection = mock(XQConnection.class);
    binder = new AttributeBinder();
    xqItemType = mock(XQItemType.class);
    given(connection.createAttributeType(null, XQItemType.XQBASETYPE_ANYSIMPLETYPE)).willReturn(xqItemType);
}
 
Example #9
Source File: ExpressionFactory.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
public XQPreparedExpression getExpression(XQConnection connection) throws Exception {
    XQPreparedExpression preparedExpression = connection
            .prepareExpression(contentFactory.getXQueryContentAsStream());
    contextItemBinder.bindContextItem(connection, preparedExpression);
    variablesBinder.bindVariables(connection, preparedExpression);
    return preparedExpression;
}
 
Example #10
Source File: XQJRunnerApp.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
public void runApp() throws Exception {
    XQDataSource xqs = dataSourceFactory.getDataSource();
    XQConnection connection = null;
    try {
        connection = connectionFactory.getConnection(xqs);
        XQPreparedExpression preparedExpression = expressionFactory.getExpression(connection);
        XQResultSequence rs = preparedExpression.executeQuery();
        rs.writeSequence(output, outputMethodFactory.getOutputMethodProperties());
    } finally {
        if (connection != null) {
            connection.close();
        }
    }
}
 
Example #11
Source File: ContextItemBinder.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
public void bindContextItem(XQConnection connection, XQPreparedExpression preparedExpression) throws Exception {
    if (config.isContextItemEnabled()) {
        String contextItemValue = config.isContextItemFromEditorEnabled() ? config.getContextItemText() :
                readFile(config.getContextItemFile());
        binderFactory.getBinder(config.getContextItemType()).bind(preparedExpression, connection,
                XQConstants.CONTEXT_ITEM, contextItemValue,
                config.getContextItemType());
    }
}
 
Example #12
Source File: VariablesBinder.java    From intellij-xquery with Apache License 2.0 5 votes vote down vote up
public void bindVariables(XQConnection connection, XQPreparedExpression preparedExpression)
        throws Exception {
    for (XQueryRunnerVariable variable : config.getVariables()) {
        if (variable.ACTIVE) {
            TypeBinder binder = binderFactory.getBinder(variable.TYPE);
            QName name = nameExtractor.getName(variable.NAME, variable.NAMESPACE);
            binder.bind(preparedExpression, connection, name, variable.VALUE, variable.TYPE);
        }
    }
}
 
Example #13
Source File: SaxonSearcher.java    From translationstudio8 with GNU General Public License v2.0 5 votes vote down vote up
public static ArrayList<String> sort(String xmlns, String fileName, String elementName, boolean isAsc)
		throws XQException {
	URI uri = new File(fileName).toURI();
	String uriPath = uri.getPath();

	ArrayList<String> rowIds = new ArrayList<String>();
	XQDataSource dataSource = new SaxonXQDataSource();

	XQConnection conn = dataSource.getConnection();
	String queryString = "for $file in doc(\'" + uriPath + "')/xliff/file,"
			+ " $tu in $file/body//trans-unit order by $tu/" + elementName + " " + (isAsc ? "" : "descending")
			+ " return <file original='{$file/@original}' tuid='{$tu/@id}'></file>";
	if (xmlns != null) {
		queryString = "declare default element namespace '" + xmlns + "';" + queryString;
	}
	XQExpression expression = conn.createExpression();
	XQSequence results = expression.executeQuery(queryString);
	while (results.next()) {
		Node node = results.getNode();
		String original = node.getAttributes().getNamedItem("original").getNodeValue();
		String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
		String rowId = RowIdUtil.getRowId(fileName, original, tuid);
		rowIds.add(rowId);
	}
	// 释放资源
	results.close();
	expression.close();
	conn.close();

	return rowIds;
}
 
Example #14
Source File: TextBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
@Override
public void bind(XQPreparedExpression expression, XQConnection connection, QName name, String value,
                             String type) throws Exception {
    expression.bindNode(name, createTextNode(value), getType(connection));
}
 
Example #15
Source File: DocumentBinderTest.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
@Before
public void setUp() throws XQException {
    expression = mock(XQPreparedExpression.class);
    connection = mock(XQConnection.class);
    binder = new DocumentBinder();
}
 
Example #16
Source File: AtomicValueBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
private XQItemType getType(XQConnection connection, String type) throws Exception {
    return connection.createAtomicType(typeMapper.getType(XQueryItemType.valueFor(type)));
}
 
Example #17
Source File: AtomicValueBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
@Override
public void bind(XQPreparedExpression expression, XQConnection connection, QName name, String value,
                             String type) throws Exception {
    expression.bindAtomicValue(name, value, getType(connection, type));
}
 
Example #18
Source File: TextBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
public XQItemType getType(XQConnection connection) throws Exception {
    return connection.createTextType();
}
 
Example #19
Source File: DocumentBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
@Override
public void bind(XQPreparedExpression expression, XQConnection connection, QName name, String value,
                             String type) throws Exception {
    expression.bindDocument(name, value, null, null);
}
 
Example #20
Source File: AttributeBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
public XQItemType getType(XQConnection connection) throws Exception {
    return connection.createAttributeType(null, XQItemType.XQBASETYPE_ANYSIMPLETYPE);
}
 
Example #21
Source File: AttributeBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
@Override
public void bind(XQPreparedExpression expression, XQConnection connection, QName name, String value,
                             String type) throws Exception {
    expression.bindNode(name, createAttributeNode(value), getType(connection));
}
 
Example #22
Source File: TypeBinder.java    From intellij-xquery with Apache License 2.0 4 votes vote down vote up
void bind(XQPreparedExpression expression, XQConnection connection, QName name, String value,
String type) throws Exception;
 
Example #23
Source File: SaxonSearcher.java    From tmxeditor8 with GNU General Public License v2.0 4 votes vote down vote up
/**
	 * 测试过滤重复文本段	robert	2012-06-11
	 * @throws XQException 
	 */
	private static void testRpeateed() throws XQException{
		String xqueryStr_1 = "declare namespace ns0='urn:oasis:names:tc:xliff:document:1.2'; " +
				"for $t in (let $allTU_1 := ( " +
				"	for $file0 in doc('/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf')/ns0:xliff/ns0:file[upper-case(@source-language)='EN-US' " +
				"		and upper-case(@target-language)='ZH-CN'], " +
				"	$tu0 in $file0/ns0:body//ns0:trans-unit " +
				"		return <tu fileName='/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf' original='{$file0/@original}' tuid='{$tu0/@id}' source='{$tu0/ns0:source/text()}' />), " +
				"	$allTU := for $allTU1 in $allTU_1  return <tu fileName='{$allTU1/@fileName}'  original='{$allTU1/@original}'  tuid='{$allTU1/@tuid}'  source='{normalize-space($allTU1/@source)}' /> ," +
				"	$id := (for $src in distinct-values($allTU/@source) " +
				"		return <root>{if (count($allTU[@source=$src])>1) then <src>{$src}</src> else ''}</root>)/src/text(), " +
				"	$tu := $allTU[@source=$id] return $tu) order by $t/@source " +
				"		return <tu fileName='{$t/@fileName}' original='{$t/@original}' tuid='{$t/@tuid}' /> ";
		
		String xqueryStr = "declare namespace ns0='urn:oasis:names:tc:xliff:document:1.2'; \n" +
		"declare function local:getPureText ($srcText1 as xs:anyType) as xs:anyType {\n" +
		"let $result := srcText1 \n" +
		"return  $result };  \n" +
		
		"for $t in (let $allTU := ( \n" +
		"	for $file0 in doc('/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf')/ns0:xliff/ns0:file[upper-case(@source-language)='EN-US'  \n" +
		"		and upper-case(@target-language)='ZH-CN'],  \n" +
		"	$tu0 in $file0/ns0:body//ns0:trans-unit  \n" +
		"		return <tu fileName='/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf' original='{$file0/@original}' tuid='{$tu0/@id}' source='{$tu0/ns0:source/text()}' />) \n" +
		" 	return $allTU )\n " +
		"	return <tu fileName='{$t/@fileName}' original='{$t/@original}' tuid='{$t/@tuid}' source='{$t/@source}'/>  \n";
		
		XQDataSource dataSource = new SaxonXQDataSource();
		XQConnection conn = null;
		XQExpression expression = null;
		XQSequence results = null;
		try {
			conn = dataSource.getConnection();
			expression = conn.createExpression();
			
			results = expression.executeQuery(xqueryStr);
			while (results.next()) {
				Node node = results.getNode();
				String fileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
				String original = node.getAttributes().getNamedItem("original").getNodeValue();
				String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
				String source = node.getAttributes().getNamedItem("source").getNodeValue();
				System.out.println(source);
//				System.out.println(tuid);
			}
			return;
		} finally {			
			// 释放资源
			if (results != null && !results.isClosed()) {				
				results.close();
			}
			if (expression != null && !expression.isClosed()) {				
				expression.close();
			}
			if (conn != null && !conn.isClosed()) {
				conn.close();
			}
		}
	}
 
Example #24
Source File: SaxonSearcher.java    From tmxeditor8 with GNU General Public License v2.0 4 votes vote down vote up
/**
	 * 繁殖翻译文本段的查询 robert 2012-04-03
	 * @param queryString
	 *            XQuery查询语句
	 * @return RowId集合
	 * @throws XQException
	 *             ;
	 */
	public static Map<String, List<String>> PropagateQurey(String queryString) throws XQException {
		XQDataSource dataSource = new SaxonXQDataSource();
		XQConnection conn = null;
		XQExpression expression = null;
		XQSequence results = null;
		try {
			conn = dataSource.getConnection();
			expression = conn.createExpression();
			
			results = expression.executeQuery(queryString);
			Map<String, List<String>> resultMap = new HashMap<String, List<String>>();
			while (results.next()) {
				Node node = results.getNode();
//				System.out.println("node.getChildNodes().getLength() = " + node.getChildNodes().getLength());
				if (node.getChildNodes().getLength() >= 1) {
					String rootFileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
					rootFileName = new File(rootFileName).getAbsolutePath();
					String rootOriginal = node.getAttributes().getNamedItem("original").getNodeValue();
					String rootTuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
					String rootRowId = RowIdUtil.getRowId(rootFileName, rootOriginal, rootTuid);
					if (!resultMap.keySet().contains(rootRowId)) {
						resultMap.put(rootRowId, new ArrayList<String>());
					}
					NodeList nodeList = node.getChildNodes();
					for (int i = 0; i < nodeList.getLength(); i++) {
						if (nodeList.item(i).getAttributes() == null) {
							continue;
						}
						String fileName = nodeList.item(i).getAttributes().getNamedItem("fileName").getNodeValue();
						fileName = new File(fileName).getAbsolutePath();
						String original = nodeList.item(i).getAttributes().getNamedItem("original").getNodeValue();
						String tuid = nodeList.item(i).getAttributes().getNamedItem("tuid").getNodeValue();
						
						String rowId = RowIdUtil.getRowId(fileName, original, tuid);
						resultMap.get(rootRowId).add(rowId);
					}
				}
				
			}
			return resultMap;
		} finally {			
			// 释放资源
			if (results != null && !results.isClosed()) {				
				results.close();
			}
			if (expression != null && !expression.isClosed()) {				
				expression.close();
			}
			if (conn != null && !conn.isClosed()) {
				conn.close();
			}
		}
	}
 
Example #25
Source File: SaxonSearcher.java    From tmxeditor8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * 查询
 * @param queryString 
 * 			  XQuery查询语句
 * @return	  RowId集合
 * @throws XQException ;
 */
private static ArrayList<String> qurey(String queryString) throws XQException {
	XQDataSource dataSource = new SaxonXQDataSource();
	XQConnection conn = null;
	XQExpression expression = null;
	XQSequence results = null;
	try {
		conn = dataSource.getConnection();
		expression = conn.createExpression();
		
		results = expression.executeQuery(queryString);
		LinkedHashSet<String> set = new LinkedHashSet<String>();
		while (results.next()) {
			Node node = results.getNode();
			String fileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
			String original = node.getAttributes().getNamedItem("original").getNodeValue();
			String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();

			// 解决 Windows 平台下,无法查询“重复文本段”的问题“:
			// 这里返回的是 URI,因此需要转成操作系统的标准文件路径。
			// 注:在 Winodws 平台中文件路径分隔符使用“\”,而在 URI 标准中文件路径分隔符使用“/”,并且会以“/”为根,
			//    因此,Windows 的路径“c:\test.txt”,使用 URI 表示为“/c:/test.txt”。
			fileName = new File(fileName).getAbsolutePath();

			String rowId = RowIdUtil.getRowId(fileName, original, tuid);
			set.add(rowId);
		}
		return new ArrayList<String>(set);
	} finally {			
		// 释放资源
		if (results != null && !results.isClosed()) {				
			results.close();
		}
		if (expression != null && !expression.isClosed()) {				
			expression.close();
		}
		if (conn != null && !conn.isClosed()) {
			conn.close();
		}
	}
}
 
Example #26
Source File: SaxonSearcher.java    From translationstudio8 with GNU General Public License v2.0 4 votes vote down vote up
/**
	 * 测试过滤重复文本段	robert	2012-06-11
	 * @throws XQException 
	 */
	private static void testRpeateed() throws XQException{
		String xqueryStr_1 = "declare namespace ns0='urn:oasis:names:tc:xliff:document:1.2'; " +
				"for $t in (let $allTU_1 := ( " +
				"	for $file0 in doc('/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf')/ns0:xliff/ns0:file[upper-case(@source-language)='EN-US' " +
				"		and upper-case(@target-language)='ZH-CN'], " +
				"	$tu0 in $file0/ns0:body//ns0:trans-unit " +
				"		return <tu fileName='/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf' original='{$file0/@original}' tuid='{$tu0/@id}' source='{$tu0/ns0:source/text()}' />), " +
				"	$allTU := for $allTU1 in $allTU_1  return <tu fileName='{$allTU1/@fileName}'  original='{$allTU1/@original}'  tuid='{$allTU1/@tuid}'  source='{normalize-space($allTU1/@source)}' /> ," +
				"	$id := (for $src in distinct-values($allTU/@source) " +
				"		return <root>{if (count($allTU[@source=$src])>1) then <src>{$src}</src> else ''}</root>)/src/text(), " +
				"	$tu := $allTU[@source=$id] return $tu) order by $t/@source " +
				"		return <tu fileName='{$t/@fileName}' original='{$t/@original}' tuid='{$t/@tuid}' /> ";
		
		String xqueryStr = "declare namespace ns0='urn:oasis:names:tc:xliff:document:1.2'; \n" +
		"declare function local:getPureText ($srcText1 as xs:anyType) as xs:anyType {\n" +
		"let $result := srcText1 \n" +
		"return  $result };  \n" +
		
		"for $t in (let $allTU := ( \n" +
		"	for $file0 in doc('/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf')/ns0:xliff/ns0:file[upper-case(@source-language)='EN-US'  \n" +
		"		and upper-case(@target-language)='ZH-CN'],  \n" +
		"	$tu0 in $file0/ns0:body//ns0:trans-unit  \n" +
		"		return <tu fileName='/home/robert/workspace/runtime-UltimateEdition.product/test/XLIFF/zh-CN/user_defineed_filter4.doc.xlf' original='{$file0/@original}' tuid='{$tu0/@id}' source='{$tu0/ns0:source/text()}' />) \n" +
		" 	return $allTU )\n " +
		"	return <tu fileName='{$t/@fileName}' original='{$t/@original}' tuid='{$t/@tuid}' source='{$t/@source}'/>  \n";
		
		XQDataSource dataSource = new SaxonXQDataSource();
		XQConnection conn = null;
		XQExpression expression = null;
		XQSequence results = null;
		try {
			conn = dataSource.getConnection();
			expression = conn.createExpression();
			
			results = expression.executeQuery(xqueryStr);
			while (results.next()) {
				Node node = results.getNode();
				String fileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
				String original = node.getAttributes().getNamedItem("original").getNodeValue();
				String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
				String source = node.getAttributes().getNamedItem("source").getNodeValue();
				System.out.println(source);
//				System.out.println(tuid);
			}
			return;
		} finally {			
			// 释放资源
			if (results != null && !results.isClosed()) {				
				results.close();
			}
			if (expression != null && !expression.isClosed()) {				
				expression.close();
			}
			if (conn != null && !conn.isClosed()) {
				conn.close();
			}
		}
	}
 
Example #27
Source File: SaxonSearcher.java    From translationstudio8 with GNU General Public License v2.0 4 votes vote down vote up
/**
	 * 繁殖翻译文本段的查询 robert 2012-04-03
	 * @param queryString
	 *            XQuery查询语句
	 * @return RowId集合
	 * @throws XQException
	 *             ;
	 */
	public static Map<String, List<String>> PropagateQurey(String queryString) throws XQException {
		XQDataSource dataSource = new SaxonXQDataSource();
		XQConnection conn = null;
		XQExpression expression = null;
		XQSequence results = null;
		try {
			conn = dataSource.getConnection();
			expression = conn.createExpression();
			
			results = expression.executeQuery(queryString);
			Map<String, List<String>> resultMap = new HashMap<String, List<String>>();
			while (results.next()) {
				Node node = results.getNode();
//				System.out.println("node.getChildNodes().getLength() = " + node.getChildNodes().getLength());
				if (node.getChildNodes().getLength() >= 1) {
					String rootFileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
					rootFileName = new File(rootFileName).getAbsolutePath();
					String rootOriginal = node.getAttributes().getNamedItem("original").getNodeValue();
					String rootTuid = node.getAttributes().getNamedItem("tuid").getNodeValue();
					String rootRowId = RowIdUtil.getRowId(rootFileName, rootOriginal, rootTuid);
					if (!resultMap.keySet().contains(rootRowId)) {
						resultMap.put(rootRowId, new ArrayList<String>());
					}
					NodeList nodeList = node.getChildNodes();
					for (int i = 0; i < nodeList.getLength(); i++) {
						if (nodeList.item(i).getAttributes() == null) {
							continue;
						}
						String fileName = nodeList.item(i).getAttributes().getNamedItem("fileName").getNodeValue();
						fileName = new File(fileName).getAbsolutePath();
						String original = nodeList.item(i).getAttributes().getNamedItem("original").getNodeValue();
						String tuid = nodeList.item(i).getAttributes().getNamedItem("tuid").getNodeValue();
						
						String rowId = RowIdUtil.getRowId(fileName, original, tuid);
						resultMap.get(rootRowId).add(rowId);
					}
				}
				
			}
			return resultMap;
		} finally {			
			// 释放资源
			if (results != null && !results.isClosed()) {				
				results.close();
			}
			if (expression != null && !expression.isClosed()) {				
				expression.close();
			}
			if (conn != null && !conn.isClosed()) {
				conn.close();
			}
		}
	}
 
Example #28
Source File: SaxonSearcher.java    From translationstudio8 with GNU General Public License v2.0 4 votes vote down vote up
/**
 * 查询
 * @param queryString 
 * 			  XQuery查询语句
 * @return	  RowId集合
 * @throws XQException ;
 */
private static ArrayList<String> qurey(String queryString) throws XQException {
	XQDataSource dataSource = new SaxonXQDataSource();
	XQConnection conn = null;
	XQExpression expression = null;
	XQSequence results = null;
	try {
		conn = dataSource.getConnection();
		expression = conn.createExpression();
		
		results = expression.executeQuery(queryString);
		LinkedHashSet<String> set = new LinkedHashSet<String>();
		while (results.next()) {
			Node node = results.getNode();
			String fileName = node.getAttributes().getNamedItem("fileName").getNodeValue();
			String original = node.getAttributes().getNamedItem("original").getNodeValue();
			String tuid = node.getAttributes().getNamedItem("tuid").getNodeValue();

			// 解决 Windows 平台下,无法查询“重复文本段”的问题“:
			// 这里返回的是 URI,因此需要转成操作系统的标准文件路径。
			// 注:在 Winodws 平台中文件路径分隔符使用“\”,而在 URI 标准中文件路径分隔符使用“/”,并且会以“/”为根,
			//    因此,Windows 的路径“c:\test.txt”,使用 URI 表示为“/c:/test.txt”。
			fileName = new File(fileName).getAbsolutePath();

			String rowId = RowIdUtil.getRowId(fileName, original, tuid);
			set.add(rowId);
		}
		return new ArrayList<String>(set);
	} finally {			
		// 释放资源
		if (results != null && !results.isClosed()) {				
			results.close();
		}
		if (expression != null && !expression.isClosed()) {				
			expression.close();
		}
		if (conn != null && !conn.isClosed()) {
			conn.close();
		}
	}
}