r338 - in trunk/wikitty-api/src: main/java/org/nuiton/wikitty/importexport test/java/org/nuiton/wikitty/importexport test/resources test/resources/csv
Author: echatellier Date: 2010-09-23 12:12:47 +0200 (Thu, 23 Sep 2010) New Revision: 338 Url: http://nuiton.org/repositories/revision/wikitty/338 Log: Check non existant linked wikitty id during import (actually skipped) Added: trunk/wikitty-api/src/test/resources/csv/ trunk/wikitty-api/src/test/resources/csv/importclient.csv trunk/wikitty-api/src/test/resources/csv/importtree.csv trunk/wikitty-api/src/test/resources/csv/importtree2.csv Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java =================================================================== --- trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-09-23 10:11:58 UTC (rev 337) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-09-23 10:12:47 UTC (rev 338) @@ -20,6 +20,7 @@ import java.io.Reader; import java.io.Writer; import java.util.Collection; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.regex.Matcher; @@ -32,6 +33,7 @@ import org.nuiton.wikitty.Criteria; import org.nuiton.wikitty.FacetTopic; import org.nuiton.wikitty.FieldType; +import org.nuiton.wikitty.FieldType.TYPE; import org.nuiton.wikitty.PagedResult; import org.nuiton.wikitty.Wikitty; import org.nuiton.wikitty.WikittyException; @@ -162,10 +164,29 @@ if (multiplesValue.startsWith("(") && multiplesValue.endsWith(")")) { multiplesValue = multiplesValue.substring(1, multiplesValue.length() - 1); } - currentWikitty.addToField(extName, fieldName, multiplesValue); + + // remove non existant wikitty on Wikitty type field + if (fieldType.getType().equals(TYPE.WIKITTY)) { + List<Wikitty> wikitties = ws.restore(securityToken, transaction, Collections.singletonList(multiplesValue)); + if ( wikitties != null && wikitties.size() == 1) { + currentWikitty.addToField(extName, fieldName, multiplesValue); + } + } + else { + currentWikitty.addToField(extName, fieldName, multiplesValue); + } } } else { - currentWikitty.setField(extName, fieldName, value); + // remove non existant wikitty on Wikitty type field + if (fieldType.getType().equals(TYPE.WIKITTY)) { + List<Wikitty> wikitties = ws.restore(securityToken, transaction, Collections.singletonList(value)); + if ( wikitties != null && wikitties.size() == 1) { + currentWikitty.setField(extName, fieldName, value); + } + } + else { + currentWikitty.setField(extName, fieldName, value); + } } } } Modified: trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java =================================================================== --- trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java 2010-09-23 10:11:58 UTC (rev 337) +++ trunk/wikitty-api/src/test/java/org/nuiton/wikitty/importexport/ImportExportCSVTest.java 2010-09-23 10:12:47 UTC (rev 338) @@ -18,12 +18,28 @@ package org.nuiton.wikitty.importexport; +import java.net.URL; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Assert; import org.junit.Test; +import org.junit.runner.RunWith; import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.Criteria; +import org.nuiton.wikitty.PagedResult; +import org.nuiton.wikitty.TreeNode; +import org.nuiton.wikitty.TreeNodeImpl; +import org.nuiton.wikitty.WikittyExtension; +import org.nuiton.wikitty.WikittyImportExportService; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.WikittyService; +import org.nuiton.wikitty.WikittyUtil; +import org.nuiton.wikitty.search.Element; +import org.nuiton.wikitty.search.Search; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; /** * Test for CSV import export class @@ -34,8 +50,31 @@ * Last update : $Date$ * By : $Author$ */ +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(locations="classpath:META-INF/spring/wikitty-test.xml") public class ImportExportCSVTest { + @Autowired + protected WikittyService ws ; + + public WikittyService getWikittyService() { + return ws; + } + + public void setWikittyService(WikittyService wikittyService) { + this.ws = wikittyService; + } + + protected static final WikittyExtension extensionClient = + new WikittyExtension("Client", "1.0", null, + WikittyUtil.buildFieldMapExtension( + "String name")); + + protected static final WikittyExtension extensionTag = + new WikittyExtension("Tag", "1.0", null, + WikittyUtil.buildFieldMapExtension( + "String tags")); + /** * Test que le pattern match les bonnes choses. */ @@ -107,4 +146,49 @@ Assert.assertEquals(1, result.length); Assert.assertEquals("toto ?", result[0]); } + + /** + * Test l'import export. + */ + @Test + public void testImport() { + + // store required import extension + WikittyProxy proxy = new WikittyProxy(ws); + proxy.storeExtension(extensionClient); + proxy.storeExtension(TreeNodeImpl.extensionTreeNode); + proxy.storeExtension(extensionTag); + + // declare import service + WikittyImportExportService wsImport = new WikittyImportExportService(null, ws); + String[] importFiles = {"/csv/importclient.csv", "/csv/importtree.csv", "/csv/importtree2.csv"}; + for (String importFile : importFiles) { + URL importFileURL = ImportExportCSVTest.class.getResource(importFile); + wsImport.syncImportFromUri(WikittyImportExportService.FORMAT.CSV, importFileURL.toExternalForm()); + } + + // test extension support + Criteria criteria = Search.query().eq(Element.ELT_EXTENSION, extensionTag.getName()).criteria(); + PagedResult<String> pagedResult = ws.findAllByCriteria(null, criteria); + Assert.assertEquals(1, pagedResult.getNumFound()); + + // test normal import + Criteria criteria2 = Search.query().eq(extensionClient.getName() + ".name", "Toto").criteria(); + PagedResult<String> pagedResult2 = ws.findAllByCriteria(null, criteria2); + Assert.assertEquals(1, pagedResult2.getNumFound()); + + // test non existant wikitty tree node childreen deletion + Criteria criteria3 = Search.query().eq(TreeNode.FQ_FIELD_TREENODE_NAME, "MyTreeNode").criteria(); + PagedResult<TreeNode> pagedResult3 = proxy.findAllByCriteria(TreeNode.class, criteria3); + Assert.assertEquals(1, pagedResult3.getNumFound()); + TreeNode myTreeNode = pagedResult3.getFirst(); + Assert.assertEquals(1, myTreeNode.getChildren().size()); + + // test des requetes imbriquées + Criteria criteria4 = Search.query().eq(TreeNode.FQ_FIELD_TREENODE_PARENT, myTreeNode.getWikittyId()).criteria(); + PagedResult<TreeNode> pagedResult4 = proxy.findAllByCriteria(TreeNode.class, criteria4); + Assert.assertEquals(1, pagedResult4.getNumFound()); + TreeNode mySubNode = pagedResult4.getFirst(); + Assert.assertEquals("MySubNode", mySubNode.getName()); + } } Added: trunk/wikitty-api/src/test/resources/csv/importclient.csv =================================================================== --- trunk/wikitty-api/src/test/resources/csv/importclient.csv (rev 0) +++ trunk/wikitty-api/src/test/resources/csv/importclient.csv 2010-09-23 10:12:47 UTC (rev 338) @@ -0,0 +1,2 @@ +"Wikitty.Id","Client.name" +"fbcc8aed-7f67-4e3c-a9aa-221373765f8d","Toto" Added: trunk/wikitty-api/src/test/resources/csv/importtree.csv =================================================================== --- trunk/wikitty-api/src/test/resources/csv/importtree.csv (rev 0) +++ trunk/wikitty-api/src/test/resources/csv/importtree.csv 2010-09-23 10:12:47 UTC (rev 338) @@ -0,0 +1,3 @@ +"Wikitty.Id","Wikitty.Ext","TreeNode.name","TreeNode.parent","TreeNode.children" +"4f6fc798-41f8-48d7-9398-119ef6ab02b6",,"MyRootNode",, +"1142aa4c-af5a-4264-9918-9f72d9ef9d59","Tag","MyTreeNode","4f6fc798-41f8-48d7-9398-119ef6ab02b6","(fbcc8aed-7f67-4e3c-a9aa-221373765f8d),(677ee1e7-239f-416c-a353-6e56bc0451e2)" Added: trunk/wikitty-api/src/test/resources/csv/importtree2.csv =================================================================== --- trunk/wikitty-api/src/test/resources/csv/importtree2.csv (rev 0) +++ trunk/wikitty-api/src/test/resources/csv/importtree2.csv 2010-09-23 10:12:47 UTC (rev 338) @@ -0,0 +1,2 @@ +"TreeNode.name","TreeNode.parent" +"MySubNode","TreeNode.name=MyTreeNode"
participants (1)
-
echatellier@users.nuiton.org