Index: src/java/org/fluidproject/services/CouchdbUtility.java =================================================================== --- src/java/org/fluidproject/services/CouchdbUtility.java (revision 9270) +++ src/java/org/fluidproject/services/CouchdbUtility.java (working copy) @@ -24,8 +24,8 @@ public static final String MCCORD_FEED_ROOT = "http://www.mccord-museum.qc.ca/fluidengage/xml/"; public static final String CONFIG_FILE_DIR = "C:\\Users\\Fluid\\workspace\\services-sketches\\src\\java\\org\\fluidproject\\services\\"; public static final String COUCH_ROOT = "http://142.150.154.59:5984"; - public static final String ARTIFACT_DB_NAME = "test1"; - public static final String EXHIBITION_DB_NAME = "test2"; + public static final String ARTIFACT_DB_NAME = "test_artifacts"; + public static final String EXHIBITION_DB_NAME = "test_exhibitions"; public static final String BULK_IMPORT_STRING = "/_bulk_docs"; public static final String[] EXHIBITION_IDS = {"55", "53", "4", "60", "57"}; public static final String[] LANGUAGES = {"1", "2"}; @@ -72,13 +72,23 @@ client.executeMethod(postMethod); } - public void parseArtifact(Map artifact, List artifacts, String lang) { + public void parseArtifact(Map artifact, List artifacts, String lang, ArrayList artifactAN) { String anumber = (String)artifact.get("accessnumber"); + if (artifactAN.contains(anumber.concat(lang))) { + return; + } try { URL artdocURL = this.buildArtifactURL(anumber, lang); Map artRoot = this.fetchAndParseXML(artdocURL, "config2.json"); if (artRoot != null) { + artifactAN.add(anumber.concat(lang)); artifacts.add(artRoot); + ArrayList relatedArtifacts = (ArrayList) getRelatedArtifacts(artRoot); + if (relatedArtifacts != null) { + for (Map art : relatedArtifacts) { + this.parseArtifact(art, artifacts, lang, artifactAN); + } + } } } catch (Exception e) { @@ -87,23 +97,49 @@ } } - public void parseArtifactsForExhibit(Map exhibit, List parsedArtifacts, String lang) { - Map artifactsTag = (Map) exhibit.get("artifacts"); - if (artifactsTag == null) { - return; + public List getRelatedArtifacts(Map artRoot) { + Map artifact = (Map) artRoot.get("artifact"); + if (artifact == null) { + return null; + } + Map ra = (Map) artifact.get("related_artifacts"); + if (ra == null) { + return null; + } + return (List) ra.get("artifact"); + } + + //Yura's +// public void parseArtifactsForExhibit(Map exhibit, List parsedArtifacts, String lang, ArrayList artifactAN) { +// Map artifactsTag = (Map) exhibit.get("artifacts"); +// if (artifactsTag == null) { +// return; +// } +// +// ArrayList artifacts = (ArrayList) artifactsTag.get("artifact"); +// if (artifacts != null) { +// for (Map artifact : artifacts) { +// this.parseArtifact(artifact, parsedArtifacts, lang, artifactAN); +// } +// } +// } + + //Justin's + public void parseArtifactsForExhibit(Map artifactsTag, List parsedArtifacts, String lang, ArrayList artifactAN) { + if (artifactsTag != null) { + ArrayList artifacts = (ArrayList) artifactsTag.get("artifact"); + if (artifacts != null) { + for (Map artifact : artifacts) { + this.parseArtifact(artifact, parsedArtifacts, lang, artifactAN); + } + } } - - ArrayList artifacts = (ArrayList) artifactsTag.get("artifact"); - if (artifacts != null) { - for (Map artifact : artifacts) { - this.parseArtifact(artifact, parsedArtifacts, lang); - } - } } - + public static void main(String[] args) { CouchdbUtility cdbu = new CouchdbUtility(); ArrayList exhibits = new ArrayList(); + ArrayList artifactAN = new ArrayList(); cdbu.provider.setMappingContext(new SAXalizerMappingContext()); try { @@ -120,9 +156,9 @@ if (exhibit == null) { break; } - exhibits.add(exhibitDoc); - cdbu.parseArtifactsForExhibit(exhibit, parsedArtifacts, lang); + cdbu.parseArtifactsForExhibit((Map) exhibit.get("artifacts"), parsedArtifacts, lang, artifactAN); + cdbu.parseArtifactsForExhibit((Map) exhibit.get("highlights"), parsedArtifacts, lang, artifactAN); //Justin's } // Save all the artifacts for the current exhibit to Couch.