r321 - trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport
Author: echatellier Date: 2010-09-16 17:35:55 +0200 (Thu, 16 Sep 2010) New Revision: 321 Url: http://nuiton.org/repositories/revision/wikitty/321 Log: Add wikitty extension support on csv import/export Modified: trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.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-16 13:26:42 UTC (rev 320) +++ trunk/wikitty-api/src/main/java/org/nuiton/wikitty/importexport/ImportExportCSV.java 2010-09-16 15:35:55 UTC (rev 321) @@ -62,6 +62,9 @@ /** Wikitty id header name. */ protected final static String FIELD_WIKITTY_ID = "Wikitty.Id"; + /** Wikitty extensions header name. */ + protected final static String FIELD_WIKITTY_EXT = "Wikitty.Ext"; + /** Pattern form link queries. */ protected Pattern queryPattern = Pattern.compile("^((\\w+)\\.(\\w+))=(\"(.+)\"|([^\"]+))$"); @@ -72,6 +75,7 @@ // get index of wikitty.id field int wikittyIdIndex = -1; + int wikittyExtIndex = -1; // read header to get extension names // and build two array for ext and fieldName @@ -81,9 +85,13 @@ String[] fieldsName = new String[header.length]; for (int i = 0; i < header.length ; ++i) { // wikitty id is technical (special management) - if (FIELD_WIKITTY_ID.equals(header[i])) { + if (FIELD_WIKITTY_ID.equalsIgnoreCase(header[i])) { wikittyIdIndex = i; } + // wikitty ext is technical (special management) + else if (FIELD_WIKITTY_EXT.equalsIgnoreCase(header[i])) { + wikittyExtIndex = i; + } else { ext[i] = header[i].substring(0, header[i].indexOf(".")); fieldsName[i] = header[i].substring(header[i].indexOf(".") + 1); @@ -94,22 +102,40 @@ String[] currentLine; while ((currentLine = csvReader.readNext()) != null) { - String wikittyId=""; - if (wikittyIdIndex != -1){ - wikittyId = currentLine[wikittyIdIndex]; + // cas d'une ligne vide en fin de fichier + if (currentLine.length == 1) { + continue; } - Wikitty currentWikitty; - if (StringUtils.isNotEmpty(wikittyId)) { - currentWikitty = new WikittyImpl(wikittyId); + + // build wikitty instance with id (if specified) + Wikitty currentWikitty = null; + if (wikittyIdIndex != -1) { + String wikittyId = currentLine[wikittyIdIndex]; + if (StringUtils.isNotBlank(wikittyId)) { + currentWikitty = new WikittyImpl(wikittyId); + } } - else { + if (currentWikitty == null) { currentWikitty = new WikittyImpl(); } + // add required extension (if specified) + if (wikittyExtIndex != -1) { + String extensionList = currentLine[wikittyExtIndex]; + if (StringUtils.isNotBlank(extensionList)) { + String[] extensions = extensionList.split(","); + for (String extension : extensions) { + String extName = extension.trim(); + addMissingExtension(securityToken, ws, transaction, currentWikitty, extName); + } + } + } + + // manage other fields for (int i = 0; i < header.length ; ++i) { // wikitty id column, already managed - if (i == wikittyIdIndex) { + if (i == wikittyIdIndex || i == wikittyExtIndex) { continue; } @@ -245,6 +271,7 @@ // write all data into writer List<String> extensionHeader = new LinkedList<String>(); extensionHeader.add(FIELD_WIKITTY_ID); + extensionHeader.add(FIELD_WIKITTY_EXT); for (FacetTopic topic : pagedResult.getTopic(Element.ELT_EXTENSION)) { String extName = topic.getTopicName(); @@ -269,6 +296,10 @@ // first, add technical id wikittyField[extensionHeader.indexOf(FIELD_WIKITTY_ID)] = w.getId(); + // second, add technical ext list + Collection<String> extNamesCollection = w.getExtensionNames(); + String extNames = StringUtils.join(extNamesCollection, ','); + wikittyField[extensionHeader.indexOf(FIELD_WIKITTY_EXT)] = extNames; // wikitty export must be composed of all field // corresponding to header extensions names @@ -280,7 +311,7 @@ Object fqField = w.getFqField(fieldName); if (fqField != null) { String separator = ""; - for (Object o : (Collection) fqField) { + for (Object o : (Collection<?>) fqField) { String fqFieldValue = WikittyUtil.toString(type, o); currentField += separator + "(" + fqFieldValue + ")"; separator = ",";
participants (1)
-
echatellier@users.nuiton.org