Changeset 627


Ignore:
Timestamp:
Apr 13, 2012, 1:10:48 PM (5 years ago)
Author:
rob.hooft@…
Message:
  • Remove tabs in a wild attempt to reduce the number of checkstyle warnings....
Location:
trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderImport.java

    r593 r627  
    9696       
    9797        for (ChemspiderEntry entry : entries.values()) {
    98                 if (entry.title == null || entry.title.isEmpty()) {
    99                         continue;
    100                 }
    101                
     98            if (entry.title == null || entry.title.isEmpty()) {
     99                continue;
     100            }
     101           
    102102            // add all labels from the entry
    103                 final Set<String> encounteredLanguages = Sets.newHashSet();
     103            final Set<String> encounteredLanguages = Sets.newHashSet();
    104104            final Set<Label> labels = Sets.newHashSet();
    105105           
    106             // skip the label because we assume all chemspider entries have the same preferred labels, even from the different sources
     106            // skip the label because we assume all chemspider entries have the same
     107            // preferred labels, even from the different sources
    107108            //labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    108109            for (String synonym : entry.synonyms) {
    109                 String text = synonym.substring(0, synonym.length() - 3);
    110                 String lang = synonym.substring(synonym.length() - 2);
    111                
    112                 // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
    113                 // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
    114                 if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
    115                         labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
    116                 } else {
    117                         // check whether this syn is already a preferred label. if so, do not add it as an alt
    118                         if (text.equals(entry.title) == false) {
    119                                 labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
    120                         }
    121                 }
     110                String text = synonym.substring(0, synonym.length() - 3);
     111                String lang = synonym.substring(synonym.length() - 2);
     112               
     113                // if this is the first time for this concept that the language is
     114                // encountered, set it as the preferred concept,
     115                // otherwise the validation utility will tell you the concept is invalid
     116                // because it has no pref label in the language.
     117                if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
     118                    labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
     119                } else {
     120                    // check whether this syn is already a preferred label.
     121                    // if so, do not add it as an alt
     122                    if (text.equals(entry.title) == false) {
     123                        labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
     124                    }
     125                }
    122126            }
    123127           
     
    128132            final Set<Notation> notations = Sets.newHashSet();
    129133            for (String extid : entry.extIds) {
    130                 if (extid.startsWith("CHEMBL")) {
    131                         notations.add(new NotationImpl(extid));
    132                         urls.add(new UrlImpl(UrlType.ALTERNATIVE, "http://www.drugbank.ca/drugs/" + extid));
    133                 }
     134                if (extid.startsWith("CHEMBL")) {
     135                    notations.add(new NotationImpl(extid));
     136                    urls.add(new UrlImpl(UrlType.ALTERNATIVE, "http://www.drugbank.ca/drugs/" + extid));
     137                }
    134138            }
    135139           
     
    137141            List<Concept> chemspiderConcepts = conceptService.getConceptsByNotation(String.valueOf(entry.csId), SCOPE.includeLabels(), 1, chemspiderBranch);
    138142            if (!chemspiderConcepts.isEmpty()) {
    139                 final Concept chemspiderConcept = chemspiderConcepts.get(0);
    140                 final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
    141                
    142                 final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    143                                 .withLabels(uniqueLabels)
    144                                         .withNotations(notations)
    145                                         .withTags(tags)
    146                                         .withUrls(urls));
    147                 try {
    148                         conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
    149                        
    150                         updatedConcepts++;
    151                 } catch (IllegalArgumentException e) {
    152                         logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    153                         unadded++;
    154                 }
     143                final Concept chemspiderConcept = chemspiderConcepts.get(0);
     144                final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
     145               
     146                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
     147                        .withLabels(uniqueLabels)
     148                        .withNotations(notations)
     149                        .withTags(tags)
     150                        .withUrls(urls));
     151                try {
     152                    conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
     153                   
     154                    updatedConcepts++;
     155                } catch (IllegalArgumentException e) {
     156                    logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     157                    unadded++;
     158                }
    155159            } else {
    156                 // only add the pref label to a new concept
    157                 labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    158                
    159                 // only add the chemspider notations for new concepts to prevent duplicates
    160                 notations.add(new NotationImpl(Integer.toString(entry.csId)));
     160                // only add the pref label to a new concept
     161                labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
     162               
     163                // only add the chemspider notations for new concepts to prevent duplicates
     164                notations.add(new NotationImpl(Integer.toString(entry.csId)));
    161165                notations.add(new NotationImpl(entry.inchiKey));
    162166               
    163                 // only add the chemspider url for new concepts to prevent duplicates
     167                // only add the chemspider url for new concepts to prevent duplicates
    164168                urls.add(new UrlImpl(UrlType.PREFERRED, "http://rdf.chemspider.com/" + entry.csId));
    165169               
    166                 // construct a new concept
    167                         final Concept c = new ConceptImpl.Builder()
    168                                         .labels(labels)
    169                                         .notations(notations)
    170                                         .tags(tags)
    171                                         .urls(urls)
    172                                         .build();
    173                                 conceptService.createConcept(c, chemspiderBranch);
     170                // construct a new concept
     171                final Concept c = new ConceptImpl.Builder()
     172                        .labels(labels)
     173                        .notations(notations)
     174                        .tags(tags)
     175                        .urls(urls)
     176                        .build();
     177                conceptService.createConcept(c, chemspiderBranch);
    174178 
    175                                 newConcepts++;
     179                newConcepts++;
    176180            }
    177181           
    178182           
    179183//            if (!entry.extIds.isEmpty()) {
    180 //              final String cui = entry.extIds.iterator().next();
     184//              final String cui = entry.extIds.iterator().next();
    181185//                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    182186//                        .withLabels(labels)
     
    186190//                 final List<Concept> concepts = conceptService.getConceptsByNotation(cui, SCOPE, 1, umlsBranch);
    187191//                 if (concepts.isEmpty()) {
    188 //                      // construct a new concept
    189 //                       final Concept c = new ConceptImpl.Builder()
    190 //                               .labels(labels)
    191 //                               .notations(notations)
    192 //                               .tags(tags)
    193 //                               .urls(urls)
    194 //                               .build();
    195 //                       conceptService.createConcept(c, chemspiderBranch);
    196 //                       
    197 //                       newConcepts++;
     192//                  // construct a new concept
     193//                   final Concept c = new ConceptImpl.Builder()
     194//                           .labels(labels)
     195//                           .notations(notations)
     196//                           .tags(tags)
     197//                           .urls(urls)
     198//                           .build();
     199//                   conceptService.createConcept(c, chemspiderBranch);
     200//                   
     201//                   newConcepts++;
    198202//                 } else {
    199203//                     final Concept existingConcept = concepts.get(0);
    200204//                     try {
    201 //                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
    202 //                              logger.info("it goes wrong here");
    203 //                      }
    204 //                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
    205 //                     
    206 //                      updatedConcepts++;
     205//                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
     206//                          logger.info("it goes wrong here");
     207//                      }
     208//                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
     209//                     
     210//                      updatedConcepts++;
    207211//                     } catch (IllegalArgumentException e) {
    208 //                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    209 //                      unadded++;
     212//                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     213//                      unadded++;
    210214//                     }
    211215//                 }
     
    224228           
    225229            counter++;
    226                 if (counter >= 5000) {
    227                         try {
    228                                 tx.success();
    229                                 tx.finish();
    230                         } catch (Exception e) {
    231                                 logger.error("Failed to commit an intermediate transaction", e);
    232                         }
    233                         tx = graphTemplate.getGraphDb().beginTx();
    234                         logger.info("Another 5k concepts processed");
    235                         lastCommitted += counter;
    236                         counter = 0;
    237                 }
     230            if (counter >= 5000) {
     231                try {
     232                    tx.success();
     233                    tx.finish();
     234                } catch (Exception e) {
     235                    logger.error("Failed to commit an intermediate transaction", e);
     236                }
     237                tx = graphTemplate.getGraphDb().beginTx();
     238                logger.info("Another 5k concepts processed");
     239                lastCommitted += counter;
     240                counter = 0;
     241            }
    238242        }
    239243       
    240244        try {
    241                 tx.success();
    242                 tx.finish();
     245            tx.success();
     246            tx.finish();
    243247        } catch (Exception e) {
    244                 logger.error("Failed to commit the final transaction", e);
     248            logger.error("Failed to commit the final transaction", e);
    245249        }
    246250
     
    299303                break;
    300304            case TITLE:
    301                 entry.title = objectValue;
    302                 break;
     305                entry.title = objectValue;
     306                break;
    303307//            case SMILES:
    304308//                entry.smiles = objectValue;
     
    314318                break;
    315319            case LANG:
    316                 entry.synonyms.add(lastSynonym + " " +objectValue);
    317                 break;
     320                entry.synonyms.add(lastSynonym + " " +objectValue);
     321                break;
    318322            default:
    319323                break;
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderImportChembl.java

    r593 r627  
    9696       
    9797        for (ChemspiderEntry entry : entries.values()) {
    98                 if (entry.title == null || entry.title.isEmpty()) {
    99                         continue;
    100                 }
    101                
     98            if (entry.title == null || entry.title.isEmpty()) {
     99                continue;
     100            }
     101           
    102102            // add all labels from the entry
    103                 final Set<String> encounteredLanguages = Sets.newHashSet();
     103            final Set<String> encounteredLanguages = Sets.newHashSet();
    104104            final Set<Label> labels = Sets.newHashSet();
    105105           
     
    107107            //labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    108108            for (String synonym : entry.synonyms) {
    109                 String text = synonym.substring(0, synonym.length() - 3);
    110                 String lang = synonym.substring(synonym.length() - 2);
    111                
    112                 // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
    113                 // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
    114                 if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
    115                         labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
    116                 } else {
    117                         // check whether this syn is already a preferred label. if so, do not add it as an alt
    118                         if (text.equals(entry.title) == false) {
    119                                 labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
    120                         }
    121                 }
     109                String text = synonym.substring(0, synonym.length() - 3);
     110                String lang = synonym.substring(synonym.length() - 2);
     111               
     112                // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
     113                // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
     114                if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
     115                    labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
     116                } else {
     117                    // check whether this syn is already a preferred label. if so, do not add it as an alt
     118                    if (text.equals(entry.title) == false) {
     119                        labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
     120                    }
     121                }
    122122            }
    123123
     
    125125            final Set<Notation> notations = Sets.newHashSet();
    126126            for (String extid : entry.extIds) {
    127                         notations.add(new NotationImpl(extid));
     127                notations.add(new NotationImpl(extid));
    128128            }
    129129           
     
    131131            final Set<Url> urls = Sets.newHashSet();
    132132            for (String url : entry.extUrls) {
    133                 urls.add(new UrlImpl(UrlType.ALTERNATIVE, url));
     133                urls.add(new UrlImpl(UrlType.ALTERNATIVE, url));
    134134            }
    135135           
     
    137137            List<Concept> chemspiderConcepts = conceptService.getConceptsByNotation(String.valueOf(entry.csId), SCOPE.includeLabels(), 1, chemspiderBranch);
    138138            if (!chemspiderConcepts.isEmpty()) {
    139                 final Concept chemspiderConcept = chemspiderConcepts.get(0);
    140                 final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
    141                
    142                 final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    143                                 .withLabels(uniqueLabels)
    144                                         .withNotations(notations)
    145                                         .withTags(tags)
    146                                         .withUrls(urls));
    147                 try {
    148                         conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
    149                        
    150                         updatedConcepts++;
    151                 } catch (IllegalArgumentException e) {
    152                         logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    153                         unadded++;
    154                 }
     139                final Concept chemspiderConcept = chemspiderConcepts.get(0);
     140                final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
     141               
     142                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
     143                        .withLabels(uniqueLabels)
     144                        .withNotations(notations)
     145                        .withTags(tags)
     146                        .withUrls(urls));
     147                try {
     148                    conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
     149                   
     150                    updatedConcepts++;
     151                } catch (IllegalArgumentException e) {
     152                    logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     153                    unadded++;
     154                }
    155155            } else {
    156                 // only add the pref label to a new concept
    157                 labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    158                
    159                 // only add the chemspider notations for new concepts to prevent duplicates
    160                 notations.add(new NotationImpl(Integer.toString(entry.csId)));
     156                // only add the pref label to a new concept
     157                labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
     158               
     159                // only add the chemspider notations for new concepts to prevent duplicates
     160                notations.add(new NotationImpl(Integer.toString(entry.csId)));
    161161                notations.add(new NotationImpl(entry.inchiKey));
    162162               
    163                 // only add the chemspider url for new concepts to prevent duplicates
     163                // only add the chemspider url for new concepts to prevent duplicates
    164164                urls.add(new UrlImpl(UrlType.PREFERRED, "http://rdf.chemspider.com/" + entry.csId));
    165165               
    166                 // construct a new concept
    167                         final Concept c = new ConceptImpl.Builder()
    168                                         .labels(labels)
    169                                         .notations(notations)
    170                                         .tags(tags)
    171                                         .urls(urls)
    172                                         .build();
    173                                 conceptService.createConcept(c, chemspiderBranch);
     166                // construct a new concept
     167                final Concept c = new ConceptImpl.Builder()
     168                        .labels(labels)
     169                        .notations(notations)
     170                        .tags(tags)
     171                        .urls(urls)
     172                        .build();
     173                conceptService.createConcept(c, chemspiderBranch);
    174174 
    175                                 newConcepts++;
     175                newConcepts++;
    176176            }
    177177           
    178178           
    179179//            if (!entry.extIds.isEmpty()) {
    180 //              final String cui = entry.extIds.iterator().next();
     180//              final String cui = entry.extIds.iterator().next();
    181181//                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    182182//                        .withLabels(labels)
     
    186186//                 final List<Concept> concepts = conceptService.getConceptsByNotation(cui, SCOPE, 1, umlsBranch);
    187187//                 if (concepts.isEmpty()) {
    188 //                      // construct a new concept
    189 //                       final Concept c = new ConceptImpl.Builder()
    190 //                               .labels(labels)
    191 //                               .notations(notations)
    192 //                               .tags(tags)
    193 //                               .urls(urls)
    194 //                               .build();
    195 //                       conceptService.createConcept(c, chemspiderBranch);
    196 //                       
    197 //                       newConcepts++;
     188//                  // construct a new concept
     189//                   final Concept c = new ConceptImpl.Builder()
     190//                           .labels(labels)
     191//                           .notations(notations)
     192//                           .tags(tags)
     193//                           .urls(urls)
     194//                           .build();
     195//                   conceptService.createConcept(c, chemspiderBranch);
     196//                   
     197//                   newConcepts++;
    198198//                 } else {
    199199//                     final Concept existingConcept = concepts.get(0);
    200200//                     try {
    201 //                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
    202 //                              logger.info("it goes wrong here");
    203 //                      }
    204 //                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
    205 //                     
    206 //                      updatedConcepts++;
     201//                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
     202//                          logger.info("it goes wrong here");
     203//                      }
     204//                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
     205//                     
     206//                      updatedConcepts++;
    207207//                     } catch (IllegalArgumentException e) {
    208 //                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    209 //                      unadded++;
     208//                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     209//                      unadded++;
    210210//                     }
    211211//                 }
     
    224224           
    225225            counter++;
    226                 if (counter >= 5000) {
    227                         try {
    228                                 tx.success();
    229                                 tx.finish();
    230                         } catch (Exception e) {
    231                                 logger.error("Failed to commit an intermediate transaction", e);
    232                         }
    233                         tx = graphTemplate.getGraphDb().beginTx();
    234                         logger.info("Another 5k concepts processed");
    235                         lastCommitted += counter;
    236                         counter = 0;
    237                 }
     226            if (counter >= 5000) {
     227                try {
     228                    tx.success();
     229                    tx.finish();
     230                } catch (Exception e) {
     231                    logger.error("Failed to commit an intermediate transaction", e);
     232                }
     233                tx = graphTemplate.getGraphDb().beginTx();
     234                logger.info("Another 5k concepts processed");
     235                lastCommitted += counter;
     236                counter = 0;
     237            }
    238238        }
    239239       
    240240        try {
    241                 tx.success();
    242                 tx.finish();
     241            tx.success();
     242            tx.finish();
    243243        } catch (Exception e) {
    244                 logger.error("Failed to commit the final transaction", e);
     244            logger.error("Failed to commit the final transaction", e);
    245245        }
    246246
     
    299299                break;
    300300            case TITLE:
    301                 entry.title = objectValue;
    302                 break;
     301                entry.title = objectValue;
     302                break;
    303303//            case SMILES:
    304304//                entry.smiles = objectValue;
     
    314314                break;
    315315            case LANG:
    316                 entry.synonyms.add(lastSynonym + " " +objectValue);
    317                 break;
     316                entry.synonyms.add(lastSynonym + " " +objectValue);
     317                break;
    318318            default:
    319319                break;
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderImportDrugbank.java

    r593 r627  
    9696       
    9797        for (ChemspiderEntry entry : entries.values()) {
    98                 if (entry.title == null || entry.title.isEmpty()) {
    99                         continue;
    100                 }
    101                
     98            if (entry.title == null || entry.title.isEmpty()) {
     99                continue;
     100            }
     101           
    102102            // add all labels from the entry
    103                 final Set<String> encounteredLanguages = Sets.newHashSet();
     103            final Set<String> encounteredLanguages = Sets.newHashSet();
    104104            final Set<Label> labels = Sets.newHashSet();
    105105           
     
    107107            //labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    108108            for (String synonym : entry.synonyms) {
    109                 String text = synonym.substring(0, synonym.length() - 3);
    110                 String lang = synonym.substring(synonym.length() - 2);
    111                
    112                 // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
    113                 // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
    114                 if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
    115                         labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
    116                 } else {
    117                         // check whether this syn is already a preferred label. if so, do not add it as an alt
    118                         if (text.equals(entry.title) == false) {
    119                                 labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
    120                         }
    121                 }
     109                String text = synonym.substring(0, synonym.length() - 3);
     110                String lang = synonym.substring(synonym.length() - 2);
     111               
     112                // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
     113                // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
     114                if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
     115                    labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
     116                } else {
     117                    // check whether this syn is already a preferred label. if so, do not add it as an alt
     118                    if (text.equals(entry.title) == false) {
     119                        labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
     120                    }
     121                }
    122122            }
    123123           
     
    128128            final Set<Notation> notations = Sets.newHashSet();
    129129            for (String extid : entry.extIds) {
    130                 if (extid.startsWith("DB")) {
    131                         notations.add(new NotationImpl(extid));
    132                         urls.add(new UrlImpl(UrlType.ALTERNATIVE, "http://www.drugbank.ca/drugs/" + extid));
    133                 }
     130                if (extid.startsWith("DB")) {
     131                    notations.add(new NotationImpl(extid));
     132                    urls.add(new UrlImpl(UrlType.ALTERNATIVE, "http://www.drugbank.ca/drugs/" + extid));
     133                }
    134134            }
    135135           
     
    137137            List<Concept> chemspiderConcepts = conceptService.getConceptsByNotation(String.valueOf(entry.csId), SCOPE.includeLabels(), 1, chemspiderBranch);
    138138            if (!chemspiderConcepts.isEmpty()) {
    139                 final Concept chemspiderConcept = chemspiderConcepts.get(0);
    140                 final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
    141                
    142                 final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    143                                 .withLabels(uniqueLabels)
    144                                         .withNotations(notations)
    145                                         .withTags(tags)
    146                                         .withUrls(urls));
    147                 try {
    148                         conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
    149                        
    150                         updatedConcepts++;
    151                 } catch (IllegalArgumentException e) {
    152                         logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    153                         unadded++;
    154                 }
     139                final Concept chemspiderConcept = chemspiderConcepts.get(0);
     140                final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
     141               
     142                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
     143                        .withLabels(uniqueLabels)
     144                        .withNotations(notations)
     145                        .withTags(tags)
     146                        .withUrls(urls));
     147                try {
     148                    conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
     149                   
     150                    updatedConcepts++;
     151                } catch (IllegalArgumentException e) {
     152                    logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     153                    unadded++;
     154                }
    155155            } else {
    156                 // only add the pref label to a new concept
    157                 labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    158                
    159                 // only add the chemspider notations for new concepts to prevent duplicates
    160                 notations.add(new NotationImpl(Integer.toString(entry.csId)));
     156                // only add the pref label to a new concept
     157                labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
     158               
     159                // only add the chemspider notations for new concepts to prevent duplicates
     160                notations.add(new NotationImpl(Integer.toString(entry.csId)));
    161161                notations.add(new NotationImpl(entry.inchiKey));
    162162               
    163                 // only add the chemspider url for new concepts to prevent duplicates
     163                // only add the chemspider url for new concepts to prevent duplicates
    164164                urls.add(new UrlImpl(UrlType.PREFERRED, "http://rdf.chemspider.com/" + entry.csId));
    165165               
    166                 // construct a new concept
    167                         final Concept c = new ConceptImpl.Builder()
    168                                         .labels(labels)
    169                                         .notations(notations)
    170                                         .tags(tags)
    171                                         .urls(urls)
    172                                         .build();
    173                                 conceptService.createConcept(c, chemspiderBranch);
     166                // construct a new concept
     167                final Concept c = new ConceptImpl.Builder()
     168                        .labels(labels)
     169                        .notations(notations)
     170                        .tags(tags)
     171                        .urls(urls)
     172                        .build();
     173                conceptService.createConcept(c, chemspiderBranch);
    174174 
    175                                 newConcepts++;
     175                newConcepts++;
    176176            }
    177177           
    178178           
    179179//            if (!entry.extIds.isEmpty()) {
    180 //              final String cui = entry.extIds.iterator().next();
     180//              final String cui = entry.extIds.iterator().next();
    181181//                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    182182//                        .withLabels(labels)
     
    186186//                 final List<Concept> concepts = conceptService.getConceptsByNotation(cui, SCOPE, 1, umlsBranch);
    187187//                 if (concepts.isEmpty()) {
    188 //                      // construct a new concept
    189 //                       final Concept c = new ConceptImpl.Builder()
    190 //                               .labels(labels)
    191 //                               .notations(notations)
    192 //                               .tags(tags)
    193 //                               .urls(urls)
    194 //                               .build();
    195 //                       conceptService.createConcept(c, chemspiderBranch);
    196 //                       
    197 //                       newConcepts++;
     188//                  // construct a new concept
     189//                   final Concept c = new ConceptImpl.Builder()
     190//                           .labels(labels)
     191//                           .notations(notations)
     192//                           .tags(tags)
     193//                           .urls(urls)
     194//                           .build();
     195//                   conceptService.createConcept(c, chemspiderBranch);
     196//                   
     197//                   newConcepts++;
    198198//                 } else {
    199199//                     final Concept existingConcept = concepts.get(0);
    200200//                     try {
    201 //                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
    202 //                              logger.info("it goes wrong here");
    203 //                      }
    204 //                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
    205 //                     
    206 //                      updatedConcepts++;
     201//                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
     202//                          logger.info("it goes wrong here");
     203//                      }
     204//                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
     205//                     
     206//                      updatedConcepts++;
    207207//                     } catch (IllegalArgumentException e) {
    208 //                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    209 //                      unadded++;
     208//                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     209//                      unadded++;
    210210//                     }
    211211//                 }
     
    224224           
    225225            counter++;
    226                 if (counter >= 5000) {
    227                         try {
    228                                 tx.success();
    229                                 tx.finish();
    230                         } catch (Exception e) {
    231                                 logger.error("Failed to commit an intermediate transaction", e);
    232                         }
    233                         tx = graphTemplate.getGraphDb().beginTx();
    234                         logger.info("Another 5k concepts processed");
    235                         lastCommitted += counter;
    236                         counter = 0;
    237                 }
     226            if (counter >= 5000) {
     227                try {
     228                    tx.success();
     229                    tx.finish();
     230                } catch (Exception e) {
     231                    logger.error("Failed to commit an intermediate transaction", e);
     232                }
     233                tx = graphTemplate.getGraphDb().beginTx();
     234                logger.info("Another 5k concepts processed");
     235                lastCommitted += counter;
     236                counter = 0;
     237            }
    238238        }
    239239       
    240240        try {
    241                 tx.success();
    242                 tx.finish();
     241            tx.success();
     242            tx.finish();
    243243        } catch (Exception e) {
    244                 logger.error("Failed to commit the final transaction", e);
     244            logger.error("Failed to commit the final transaction", e);
    245245        }
    246246
     
    299299                break;
    300300            case TITLE:
    301                 entry.title = objectValue;
    302                 break;
     301                entry.title = objectValue;
     302                break;
    303303//            case SMILES:
    304304//                entry.smiles = objectValue;
     
    314314                break;
    315315            case LANG:
    316                 entry.synonyms.add(lastSynonym + " " +objectValue);
    317                 break;
     316                entry.synonyms.add(lastSynonym + " " +objectValue);
     317                break;
    318318            default:
    319319                break;
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderImportMesh.java

    r593 r627  
    8585        String line;
    8686        while ((line = reader.readLine()) != null) {
    87                 StringTokenizer tokenizer = new StringTokenizer(line.trim());
    88                
    89                 String cui = tokenizer.nextToken();
    90                 String cs1 = tokenizer.nextToken();
    91                 String cs2 = tokenizer.nextToken();
    92                
    93                 if (!chemspiderMeshTagMapping.containsKey(cui)) {
    94                         chemspiderMeshTagMapping.put(cui, new ArrayList<Integer>());
    95                 }
    96                
    97                 chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs1));
    98                 chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs2));
     87            StringTokenizer tokenizer = new StringTokenizer(line.trim());
     88           
     89            String cui = tokenizer.nextToken();
     90            String cs1 = tokenizer.nextToken();
     91            String cs2 = tokenizer.nextToken();
     92           
     93            if (!chemspiderMeshTagMapping.containsKey(cui)) {
     94                chemspiderMeshTagMapping.put(cui, new ArrayList<Integer>());
     95            }
     96           
     97            chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs1));
     98            chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs2));
    9999        }
    100100        reader.close();
     
    110110//        Map<String,Map<Integer,Integer>> dones = Maps.newHashMap();
    111111//        for (Integer id : dupIds.keySet()) {
    112 //              List<String> ids = dupIds.get(id);
    113 //              for (String cui : ids) {
    114 //                      for (Integer id2 : dupIds.keySet()) {
    115 //                              if (id2 != id) {
    116 //                                      List<String> ids2 = dupIds.get(id2);
    117 //                                      if (ids2.contains(cui)) {
    118 //                                              Map<Integer,Integer> tmp = dones.get(cui);
    119 //                                              if (tmp == null) {
    120 //                                                      writer.write(cui + "\t" + id + "\t" + id2 + "\n");
    121 //                                                     
    122 //                                                      dones.put(cui, new HashMap<Integer,Integer>());
    123 //                                                      tmp = dones.get(cui);
    124 //                                                      tmp.put(id, id2);
    125 //                                              } else {
    126 //                                                      boolean dup = false;
    127 //                                                      for (Entry<Integer,Integer> entry : tmp.entrySet()) {
    128 //                                                              if ((entry.getKey() == id && entry.getValue() == id2) || (entry.getKey() == id2 && entry.getValue() == id)) {
    129 //                                                                      dup = true;
    130 //                                                              }
    131 //                                                      }
    132 //                                                     
    133 //                                                      if (!dup) {
    134 //                                                              writer.write(cui + "\t" + id + "\t" + id2 + "\n");
    135 //                                                              writer.flush();
    136 //                                                      tmp.put(id, id2);
    137 //                                                      }
    138 //                                              }
    139 //                                      }
    140 //                              }
    141 //                      }
    142 //              }
     112//          List<String> ids = dupIds.get(id);
     113//          for (String cui : ids) {
     114//              for (Integer id2 : dupIds.keySet()) {
     115//                  if (id2 != id) {
     116//                      List<String> ids2 = dupIds.get(id2);
     117//                      if (ids2.contains(cui)) {
     118//                          Map<Integer,Integer> tmp = dones.get(cui);
     119//                          if (tmp == null) {
     120//                              writer.write(cui + "\t" + id + "\t" + id2 + "\n");
     121//                             
     122//                              dones.put(cui, new HashMap<Integer,Integer>());
     123//                              tmp = dones.get(cui);
     124//                              tmp.put(id, id2);
     125//                          } else {
     126//                              boolean dup = false;
     127//                              for (Entry<Integer,Integer> entry : tmp.entrySet()) {
     128//                                  if ((entry.getKey() == id && entry.getValue() == id2) || (entry.getKey() == id2 && entry.getValue() == id)) {
     129//                                      dup = true;
     130//                                  }
     131//                              }
     132//                             
     133//                              if (!dup) {
     134//                                  writer.write(cui + "\t" + id + "\t" + id2 + "\n");
     135//                                  writer.flush();
     136//                                  tmp.put(id, id2);
     137//                              }
     138//                          }
     139//                      }
     140//                  }
     141//              }
     142//          }
    143143//        }
    144144//        writer.flush();
     
    163163       
    164164        for (ChemspiderEntry entry : entries.values()) {
    165                 if (entry.title == null || entry.title.isEmpty()) {
    166                         continue;
    167                 }
    168                
     165            if (entry.title == null || entry.title.isEmpty()) {
     166                continue;
     167            }
     168           
    169169            // add all labels from the entry
    170                 final Set<String> encounteredLanguages = Sets.newHashSet();
     170            final Set<String> encounteredLanguages = Sets.newHashSet();
    171171            final Set<Label> labels = Sets.newHashSet();
    172172            labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    173173            for (String synonym : entry.synonyms) {
    174                 String text = synonym.substring(0, synonym.length() - 3);
    175                 String lang = synonym.substring(synonym.length() - 2);
    176                
    177                 // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
    178                 // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
    179                 if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
    180                         labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
    181                 } else {
    182                         // check whether this syn is already a preferred label. if so, do not add it as an alt
    183                         if (text.equals(entry.title) == false) {
    184                                 labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
    185                         }
    186                 }
     174                String text = synonym.substring(0, synonym.length() - 3);
     175                String lang = synonym.substring(synonym.length() - 2);
     176               
     177                // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
     178                // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
     179                if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
     180                    labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
     181                } else {
     182                    // check whether this syn is already a preferred label. if so, do not add it as an alt
     183                    if (text.equals(entry.title) == false) {
     184                        labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
     185                    }
     186                }
    187187            }
    188188           
     
    200200            // so the mesh cui (the D.... identifiers) should be used.
    201201            for (String meshTag : entry.extIds) {
    202                 boolean meshConceptFound = false;
    203                
    204                     if (chemspiderMeshTagMapping.containsKey(meshTag) && chemspiderMeshTagMapping.get(meshTag).contains(entry.csId)) {
    205                             List<Concept> meshConcepts = conceptService.getConceptsByNotation(meshTag, SCOPE, 1, umlsBranch);
    206                             if (!meshConcepts.isEmpty()) {
    207                                 final Concept meshConcept = meshConcepts.get(0);
    208                                 tagService.createTag(meshConcept.getUuid());
    209                                 tags.add(meshConcept);
    210                                
    211                                 isUsedForTags = true;
    212                                 meshConceptFound = true;
    213                             } else {
    214                                 logger.warn("Could not tag CS concept {} with mesh cui {}", entry.csId, meshTag);
    215                             }
    216                     }
    217                    
    218                     if (meshConceptFound) {
    219                         break;
    220                     }
     202                boolean meshConceptFound = false;
     203               
     204                if (chemspiderMeshTagMapping.containsKey(meshTag) && chemspiderMeshTagMapping.get(meshTag).contains(entry.csId)) {
     205                    List<Concept> meshConcepts = conceptService.getConceptsByNotation(meshTag, SCOPE, 1, umlsBranch);
     206                    if (!meshConcepts.isEmpty()) {
     207                        final Concept meshConcept = meshConcepts.get(0);
     208                        tagService.createTag(meshConcept.getUuid());
     209                        tags.add(meshConcept);
     210                       
     211                        isUsedForTags = true;
     212                        meshConceptFound = true;
     213                    } else {
     214                        logger.warn("Could not tag CS concept {} with mesh cui {}", entry.csId, meshTag);
     215                    }
     216                }
     217               
     218                if (meshConceptFound) {
     219                    break;
     220                }
    221221            }
    222222           
     
    229229           
    230230            if (!entry.extIds.isEmpty() && isUsedForTags == false) {
    231                 final String cui = entry.extIds.iterator().next();
     231                final String cui = entry.extIds.iterator().next();
    232232                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    233233                        .withLabels(labels)
     
    237237                 final List<Concept> concepts = conceptService.getConceptsByNotation(cui, SCOPE, 1, umlsBranch);
    238238                 if (concepts.isEmpty()) {
    239                         // construct a new concept
    240                          final Concept c = new ConceptImpl.Builder()
    241                                  .labels(labels)
    242                                  .notations(notations)
    243                                  .tags(tags)
    244                                  .urls(urls)
    245                                  .build();
    246                          conceptService.createConcept(c, chemspiderBranch);
    247                          
    248                          newConcepts++;
     239                    // construct a new concept
     240                     final Concept c = new ConceptImpl.Builder()
     241                             .labels(labels)
     242                             .notations(notations)
     243                             .tags(tags)
     244                             .urls(urls)
     245                             .build();
     246                     conceptService.createConcept(c, chemspiderBranch);
     247                     
     248                     newConcepts++;
    249249                 } else {
    250250                     final Concept existingConcept = concepts.get(0);
    251251                     try {
    252                         if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
    253                                 logger.info("it goes wrong here");
    254                         }
    255                         conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
    256                        
    257                         updatedConcepts++;
     252                        if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
     253                            logger.info("it goes wrong here");
     254                        }
     255                        conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
     256                       
     257                        updatedConcepts++;
    258258                     } catch (IllegalArgumentException e) {
    259                         logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    260                         unadded++;
     259                        logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     260                        unadded++;
    261261                     }
    262262                 }
     
    275275           
    276276            counter++;
    277                 if (counter >= 5000) {
    278                         tx.success();
    279                         tx.finish();
    280                         tx = graphTemplate.getGraphDb().beginTx();
    281                         logger.info("Another 5k concepts processed");
    282                         lastCommitted += counter;
    283                         counter = 0;
    284                 }
     277            if (counter >= 5000) {
     278                tx.success();
     279                tx.finish();
     280                tx = graphTemplate.getGraphDb().beginTx();
     281                logger.info("Another 5k concepts processed");
     282                lastCommitted += counter;
     283                counter = 0;
     284            }
    285285        }
    286286       
    287287        try {
    288                 tx.success();
    289                 tx.finish();
     288            tx.success();
     289            tx.finish();
    290290        } catch (Exception e) {
    291                 logger.error("Failed to commit the final transaction", e);
     291            logger.error("Failed to commit the final transaction", e);
    292292        }
    293293
     
    350350                break;
    351351            case TITLE:
    352                 entry.title = objectValue;
    353                 break;
     352                entry.title = objectValue;
     353                break;
    354354//            case SMILES:
    355355//                entry.smiles = objectValue;
     
    360360                // tmp
    361361                if (!dupIds.containsKey(entry.csId)) {
    362                         dupIds.put(entry.csId, new ArrayList<String>());
     362                    dupIds.put(entry.csId, new ArrayList<String>());
    363363                }
    364364                dupIds.get(entry.csId).add(objectValue);
     
    373373                break;
    374374            case LANG:
    375                 entry.synonyms.add(lastSynonym + " " +objectValue);
    376                 break;
     375                entry.synonyms.add(lastSynonym + " " +objectValue);
     376                break;
    377377            default:
    378378                break;
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderImportMesh_fixingTags.java

    r596 r627  
    105105   
    106106    private void loadMeSHToMultipleCUIsMapping() throws IOException {
    107        
    108         Set<String> meshCodeMappedByMultipleChemspiderConcepts = Sets.newHashSet();
    109        
    110         BufferedReader reader = new BufferedReader(new FileReader(dupCuiFile));
     107       
     108        Set<String> meshCodeMappedByMultipleChemspiderConcepts = Sets.newHashSet();
     109       
     110        BufferedReader reader = new BufferedReader(new FileReader(dupCuiFile));
    111111        String line;
    112112        while ((line = reader.readLine()) != null) {
    113                 StringTokenizer tokenizer = new StringTokenizer(line.trim());
    114                
    115                 String meshCode = tokenizer.nextToken();
    116                 String cs1 = tokenizer.nextToken();
    117                 String cs2 = tokenizer.nextToken();
    118                
    119                 meshCodeMappedByMultipleChemspiderConcepts.add(meshCode);
     113            StringTokenizer tokenizer = new StringTokenizer(line.trim());
     114           
     115            String meshCode = tokenizer.nextToken();
     116            String cs1 = tokenizer.nextToken();
     117            String cs2 = tokenizer.nextToken();
     118           
     119            meshCodeMappedByMultipleChemspiderConcepts.add(meshCode);
    120120        }
    121121        reader.close();
     
    137137           
    138138            if (!meshCodeMappedByMultipleChemspiderConcepts.contains(dupMeSHCode)) {
    139                 // this mesh code is unknown by chemspider import. Skip it.
    140                 continue;
     139                // this mesh code is unknown by chemspider import. Skip it.
     140                continue;
    141141            }
    142142           
     
    171171           
    172172            if (nrSuperCUIs == 1) {
    173                 meshCUIsMapping.put(dupMeSHCode, cuis);
     173                meshCUIsMapping.put(dupMeSHCode, cuis);
    174174                meshSuperCUIMapping.put(dupMeSHCode, superCUI);
    175175            }
    176176//            else if (nrSuperCUIs == 0) {
    177 //              // do nothing, forget about this MeSH code as there is no super type CUI
    178 //              logger.error("nrSuperCUIs is {}", nrSuperCUIs);
     177//              // do nothing, forget about this MeSH code as there is no super type CUI
     178//              logger.error("nrSuperCUIs is {}", nrSuperCUIs);
    179179//                logger.error("when {} is mapped to {}", dupMeSHCode, cuis.toString());
    180180//                System.exit(1);
     
    243243                List<Concept> childConcepts = conceptService.getConceptsByTag(cuiConcept.getUuid(), SCOPE.includeTags(), Integer.MAX_VALUE);
    244244                for (Concept oneChildConcept: childConcepts) {
    245                        
    246                         Set<Concept> toBeRemovedTags = null;
    247                        
    248                         for (Concept c:oneChildConcept.getTags()) {
    249                                 if (c.getUuid().equals(cuiConcept.getUuid())) {
    250                                         toBeRemovedTags = Sets.newHashSet(c);
    251                                 }
    252                         }
    253                        
     245                   
     246                    Set<Concept> toBeRemovedTags = null;
     247                   
     248                    for (Concept c:oneChildConcept.getTags()) {
     249                        if (c.getUuid().equals(cuiConcept.getUuid())) {
     250                            toBeRemovedTags = Sets.newHashSet(c);
     251                        }
     252                    }
     253                   
    254254                    if (conceptService.getConcept(oneChildConcept.getUuid(), chemspiderBranch).getLabels().size() > 0) {
    255255                        // this concept was created/updated during chemspider import. Replace the tag with superCUI.
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderImportPdb.java

    r593 r627  
    9696       
    9797        for (ChemspiderEntry entry : entries.values()) {
    98                 if (entry.title == null || entry.title.isEmpty()) {
    99                         continue;
    100                 }
    101                
     98            if (entry.title == null || entry.title.isEmpty()) {
     99                continue;
     100            }
     101           
    102102            // add all labels from the entry
    103                 final Set<String> encounteredLanguages = Sets.newHashSet();
     103            final Set<String> encounteredLanguages = Sets.newHashSet();
    104104            final Set<Label> labels = Sets.newHashSet();
    105105           
     
    107107            //labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    108108            for (String synonym : entry.synonyms) {
    109                 String text = synonym.substring(0, synonym.length() - 3);
    110                 String lang = synonym.substring(synonym.length() - 2);
    111                
    112                 // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
    113                 // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
    114                 if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
    115                         labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
    116                 } else {
    117                         // check whether this syn is already a preferred label. if so, do not add it as an alt
    118                         if (text.equals(entry.title) == false) {
    119                                 labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
    120                         }
    121                 }
     109                String text = synonym.substring(0, synonym.length() - 3);
     110                String lang = synonym.substring(synonym.length() - 2);
     111               
     112                // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
     113                // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
     114                if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
     115                    labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
     116                } else {
     117                    // check whether this syn is already a preferred label. if so, do not add it as an alt
     118                    if (text.equals(entry.title) == false) {
     119                        labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
     120                    }
     121                }
    122122            }
    123123           
     
    128128            final Set<Url> urls = Sets.newHashSet();
    129129            for (String url : entry.extUrls) {
    130                 if (url.startsWith("http://www.rcsb.org/pdb/ligand")) {
    131                         urls.add(new UrlImpl(UrlType.ALTERNATIVE, url.replaceFirst("rcsb", "pdb")));
    132                 }
     130                if (url.startsWith("http://www.rcsb.org/pdb/ligand")) {
     131                    urls.add(new UrlImpl(UrlType.ALTERNATIVE, url.replaceFirst("rcsb", "pdb")));
     132                }
    133133            }
    134134           
     
    136136            List<Concept> chemspiderConcepts = conceptService.getConceptsByNotation(String.valueOf(entry.csId), SCOPE.includeLabels(), 1, chemspiderBranch);
    137137            if (!chemspiderConcepts.isEmpty()) {
    138                 final Concept chemspiderConcept = chemspiderConcepts.get(0);
    139                 final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
    140                
    141                 final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    142                                 .withLabels(uniqueLabels)
    143                                         .withNotations(notations)
    144                                         .withTags(tags)
    145                                         .withUrls(urls));
    146                 try {
    147                         conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
    148                        
    149                         updatedConcepts++;
    150                 } catch (IllegalArgumentException e) {
    151                         logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    152                         unadded++;
    153                 }
     138                final Concept chemspiderConcept = chemspiderConcepts.get(0);
     139                final Set<Label> uniqueLabels = Sets.difference(labels, chemspiderConcept.getLabels());
     140               
     141                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
     142                        .withLabels(uniqueLabels)
     143                        .withNotations(notations)
     144                        .withTags(tags)
     145                        .withUrls(urls));
     146                try {
     147                    conceptService.updateConcept(chemspiderConcept.getUuid(), changeset, chemspiderBranch);
     148                   
     149                    updatedConcepts++;
     150                } catch (IllegalArgumentException e) {
     151                    logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     152                    unadded++;
     153                }
    154154            } else {
    155                 // only add the pref label to a new concept
    156                 labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    157                
    158                 // only add the chemspider notations for new concepts to prevent duplicates
    159                 notations.add(new NotationImpl(Integer.toString(entry.csId)));
     155                // only add the pref label to a new concept
     156                labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
     157               
     158                // only add the chemspider notations for new concepts to prevent duplicates
     159                notations.add(new NotationImpl(Integer.toString(entry.csId)));
    160160                notations.add(new NotationImpl(entry.inchiKey));
    161161               
    162                 // only add the chemspider url for new concepts to prevent duplicates
     162                // only add the chemspider url for new concepts to prevent duplicates
    163163                urls.add(new UrlImpl(UrlType.PREFERRED, "http://rdf.chemspider.com/" + entry.csId));
    164164               
    165                 // construct a new concept
    166                         final Concept c = new ConceptImpl.Builder()
    167                                         .labels(labels)
    168                                         .notations(notations)
    169                                         .tags(tags)
    170                                         .urls(urls)
    171                                         .build();
    172                                 conceptService.createConcept(c, chemspiderBranch);
     165                // construct a new concept
     166                final Concept c = new ConceptImpl.Builder()
     167                        .labels(labels)
     168                        .notations(notations)
     169                        .tags(tags)
     170                        .urls(urls)
     171                        .build();
     172                conceptService.createConcept(c, chemspiderBranch);
    173173 
    174                                 newConcepts++;
     174                newConcepts++;
    175175            }
    176176           
    177177           
    178178//            if (!entry.extIds.isEmpty()) {
    179 //              final String cui = entry.extIds.iterator().next();
     179//              final String cui = entry.extIds.iterator().next();
    180180//                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    181181//                        .withLabels(labels)
     
    185185//                 final List<Concept> concepts = conceptService.getConceptsByNotation(cui, SCOPE, 1, umlsBranch);
    186186//                 if (concepts.isEmpty()) {
    187 //                      // construct a new concept
    188 //                       final Concept c = new ConceptImpl.Builder()
    189 //                               .labels(labels)
    190 //                               .notations(notations)
    191 //                               .tags(tags)
    192 //                               .urls(urls)
    193 //                               .build();
    194 //                       conceptService.createConcept(c, chemspiderBranch);
    195 //                       
    196 //                       newConcepts++;
     187//                  // construct a new concept
     188//                   final Concept c = new ConceptImpl.Builder()
     189//                           .labels(labels)
     190//                           .notations(notations)
     191//                           .tags(tags)
     192//                           .urls(urls)
     193//                           .build();
     194//                   conceptService.createConcept(c, chemspiderBranch);
     195//                   
     196//                   newConcepts++;
    197197//                 } else {
    198198//                     final Concept existingConcept = concepts.get(0);
    199199//                     try {
    200 //                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
    201 //                              logger.info("it goes wrong here");
    202 //                      }
    203 //                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
    204 //                     
    205 //                      updatedConcepts++;
     200//                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
     201//                          logger.info("it goes wrong here");
     202//                      }
     203//                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
     204//                     
     205//                      updatedConcepts++;
    206206//                     } catch (IllegalArgumentException e) {
    207 //                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    208 //                      unadded++;
     207//                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     208//                      unadded++;
    209209//                     }
    210210//                 }
     
    223223           
    224224            counter++;
    225                 if (counter >= 5000) {
    226                         try {
    227                                 tx.success();
    228                                 tx.finish();
    229                         } catch (Exception e) {
    230                                 logger.error("Failed to commit an intermediate transaction", e);
    231                         }
    232                         tx = graphTemplate.getGraphDb().beginTx();
    233                         logger.info("Another 5k concepts processed");
    234                         lastCommitted += counter;
    235                         counter = 0;
    236                 }
     225            if (counter >= 5000) {
     226                try {
     227                    tx.success();
     228                    tx.finish();
     229                } catch (Exception e) {
     230                    logger.error("Failed to commit an intermediate transaction", e);
     231                }
     232                tx = graphTemplate.getGraphDb().beginTx();
     233                logger.info("Another 5k concepts processed");
     234                lastCommitted += counter;
     235                counter = 0;
     236            }
    237237        }
    238238       
    239239        try {
    240                 tx.success();
    241                 tx.finish();
     240            tx.success();
     241            tx.finish();
    242242        } catch (Exception e) {
    243                 logger.error("Failed to commit the final transaction", e);
     243            logger.error("Failed to commit the final transaction", e);
    244244        }
    245245
     
    298298                break;
    299299            case TITLE:
    300                 entry.title = objectValue;
    301                 break;
     300                entry.title = objectValue;
     301                break;
    302302//            case SMILES:
    303303//                entry.smiles = objectValue;
     
    313313                break;
    314314            case LANG:
    315                 entry.synonyms.add(lastSynonym + " " +objectValue);
    316                 break;
     315                entry.synonyms.add(lastSynonym + " " +objectValue);
     316                break;
    317317            default:
    318318                break;
  • trunk/code/conceptwiki/imports/imports-chemspider/src/main/java/nl/nbic/conceptwiki/imports/chemspider/ChemSpiderUpdateMeshTags.java

    r593 r627  
    8585//        String line;
    8686//        while ((line = reader.readLine()) != null) {
    87 //              StringTokenizer tokenizer = new StringTokenizer(line.trim());
    88 //             
    89 //              String cui = tokenizer.nextToken();
    90 //              String cs1 = tokenizer.nextToken();
    91 //              String cs2 = tokenizer.nextToken();
    92 //             
    93 //              if (!chemspiderMeshTagMapping.containsKey(cui)) {
    94 //                      chemspiderMeshTagMapping.put(cui, new ArrayList<Integer>());
    95 //              }
    96 //             
    97 //              chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs1));
    98 //              chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs2));
     87//          StringTokenizer tokenizer = new StringTokenizer(line.trim());
     88//         
     89//          String cui = tokenizer.nextToken();
     90//          String cs1 = tokenizer.nextToken();
     91//          String cs2 = tokenizer.nextToken();
     92//         
     93//          if (!chemspiderMeshTagMapping.containsKey(cui)) {
     94//              chemspiderMeshTagMapping.put(cui, new ArrayList<Integer>());
     95//          }
     96//         
     97//          chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs1));
     98//          chemspiderMeshTagMapping.get(cui).add(Integer.valueOf(cs2));
    9999//        }
    100100//        reader.close();
     
    110110//        Map<String,Map<Integer,Integer>> dones = Maps.newHashMap();
    111111//        for (Integer id : dupIds.keySet()) {
    112 //              List<String> ids = dupIds.get(id);
    113 //              for (String cui : ids) {
    114 //                      for (Integer id2 : dupIds.keySet()) {
    115 //                              if (id2 != id) {
    116 //                                      List<String> ids2 = dupIds.get(id2);
    117 //                                      if (ids2.contains(cui)) {
    118 //                                              Map<Integer,Integer> tmp = dones.get(cui);
    119 //                                              if (tmp == null) {
    120 //                                                      writer.write(cui + "\t" + id + "\t" + id2 + "\n");
    121 //                                                     
    122 //                                                      dones.put(cui, new HashMap<Integer,Integer>());
    123 //                                                      tmp = dones.get(cui);
    124 //                                                      tmp.put(id, id2);
    125 //                                              } else {
    126 //                                                      boolean dup = false;
    127 //                                                      for (Entry<Integer,Integer> entry : tmp.entrySet()) {
    128 //                                                              if ((entry.getKey() == id && entry.getValue() == id2) || (entry.getKey() == id2 && entry.getValue() == id)) {
    129 //                                                                      dup = true;
    130 //                                                              }
    131 //                                                      }
    132 //                                                     
    133 //                                                      if (!dup) {
    134 //                                                              writer.write(cui + "\t" + id + "\t" + id2 + "\n");
    135 //                                                              writer.flush();
    136 //                                                      tmp.put(id, id2);
    137 //                                                      }
    138 //                                              }
    139 //                                      }
    140 //                              }
    141 //                      }
    142 //              }
     112//          List<String> ids = dupIds.get(id);
     113//          for (String cui : ids) {
     114//              for (Integer id2 : dupIds.keySet()) {
     115//                  if (id2 != id) {
     116//                      List<String> ids2 = dupIds.get(id2);
     117//                      if (ids2.contains(cui)) {
     118//                          Map<Integer,Integer> tmp = dones.get(cui);
     119//                          if (tmp == null) {
     120//                              writer.write(cui + "\t" + id + "\t" + id2 + "\n");
     121//                             
     122//                              dones.put(cui, new HashMap<Integer,Integer>());
     123//                              tmp = dones.get(cui);
     124//                              tmp.put(id, id2);
     125//                          } else {
     126//                              boolean dup = false;
     127//                              for (Entry<Integer,Integer> entry : tmp.entrySet()) {
     128//                                  if ((entry.getKey() == id && entry.getValue() == id2) || (entry.getKey() == id2 && entry.getValue() == id)) {
     129//                                      dup = true;
     130//                                  }
     131//                              }
     132//                             
     133//                              if (!dup) {
     134//                                  writer.write(cui + "\t" + id + "\t" + id2 + "\n");
     135//                                  writer.flush();
     136//                                  tmp.put(id, id2);
     137//                              }
     138//                          }
     139//                      }
     140//                  }
     141//              }
     142//          }
    143143//        }
    144144//        writer.flush();
     
    159159        int lastCommitted = 0;
    160160
    161         int notProperlyTagged = 0;
     161        int notProperlyTagged = 0;
    162162       
    163163        Transaction tx = graphTemplate.getGraphDb().beginTx();
     
    165165       
    166166        for (ChemspiderEntry entry : entries.values()) {
    167                 if (entry.title == null || entry.title.isEmpty()) {
    168                         continue;
    169                 }
    170 //             
     167            if (entry.title == null || entry.title.isEmpty()) {
     168                continue;
     169            }
     170//         
    171171//            // add all labels from the entry
    172 //              final Set<String> encounteredLanguages = Sets.newHashSet();
     172//          final Set<String> encounteredLanguages = Sets.newHashSet();
    173173//            final Set<Label> labels = Sets.newHashSet();
    174174//            labels.add(new LabelImpl(LabelType.PREFERRED, entry.title, LANG_EN));
    175175//            for (String synonym : entry.synonyms) {
    176 //              String text = synonym.substring(0, synonym.length() - 3);
    177 //              String lang = synonym.substring(synonym.length() - 2);
    178 //             
    179 //              // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
    180 //              // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
    181 //              if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
    182 //                      labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
    183 //              } else {
    184 //                      // check whether this syn is already a preferred label. if so, do not add it as an alt
    185 //                      if (text.equals(entry.title) == false) {
    186 //                              labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
    187 //                      }
    188 //              }
     176//              String text = synonym.substring(0, synonym.length() - 3);
     177//              String lang = synonym.substring(synonym.length() - 2);
     178//             
     179//              // if this is the first time for this concept that the language is encountered, set it as the preferred concept,
     180//              // otherwise the validation utility will tell you the concept is invalid because it has no pref label in the language.
     181//              if (lang.equals("en") == false && encounteredLanguages.add(lang)) {
     182//                  labels.add(new LabelImpl(LabelType.PREFERRED, text, new LanguageImpl(lang)));
     183//              } else {
     184//                  // check whether this syn is already a preferred label. if so, do not add it as an alt
     185//                  if (text.equals(entry.title) == false) {
     186//                      labels.add(new LabelImpl(LabelType.ALTERNATIVE, text, new LanguageImpl(lang)));
     187//                  }
     188//              }
    189189//            }
    190190//           
     
    199199//            //String meshTag = entry.extIds.iterator().next();
    200200//           
    201                
    202                 for (String meshCui : entry.extIds) {
    203                         List<Concept> concepts = conceptService.getConceptsByNotation(meshCui, SCOPE, 1, umlsBranch);
    204                         if (concepts.isEmpty()) {
    205                                 continue;
    206                         } else {
    207                                 final Concept concept = concepts.get(0);
    208                                
    209                                 // check whether it has the tag we need
    210                                 boolean hasRequiredTag = false;
    211                                 for (Concept tag : concept.getTags()) {
    212                                         if (tag.getUuid().equals(chemicalViewedStructurallyUuid)) {
    213                                                 hasRequiredTag = true;
    214                                         }
    215                                 }
    216                                 // if it doesnt have the required tag, update the concept
    217                                 if (!hasRequiredTag) {
    218                                         final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl().withTags(tags));
    219                                         conceptService.updateConcept(concept.getUuid(), changeset, chemspiderBranch);
    220                                        
    221                                         notProperlyTagged++;
    222                                 }
    223                         }
    224                 }
    225                
     201           
     202            for (String meshCui : entry.extIds) {
     203                List<Concept> concepts = conceptService.getConceptsByNotation(meshCui, SCOPE, 1, umlsBranch);
     204                if (concepts.isEmpty()) {
     205                    continue;
     206                } else {
     207                    final Concept concept = concepts.get(0);
     208                   
     209                    // check whether it has the tag we need
     210                    boolean hasRequiredTag = false;
     211                    for (Concept tag : concept.getTags()) {
     212                        if (tag.getUuid().equals(chemicalViewedStructurallyUuid)) {
     213                            hasRequiredTag = true;
     214                        }
     215                    }
     216                    // if it doesnt have the required tag, update the concept
     217                    if (!hasRequiredTag) {
     218                        final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl().withTags(tags));
     219                        conceptService.updateConcept(concept.getUuid(), changeset, chemspiderBranch);
     220                       
     221                        notProperlyTagged++;
     222                    }
     223                }
     224            }
     225           
    226226//            // Loop over all extId values to dodge the situation where the (supplemental?) cui is used and cannot find the concept for it,
    227227//            // so the mesh cui (the D.... identifiers) should be used.
    228228//            for (String meshTag : entry.extIds) {
    229 //              boolean meshConceptFound = false;
    230 //             
    231 //                  if (chemspiderMeshTagMapping.containsKey(meshTag) && chemspiderMeshTagMapping.get(meshTag).contains(entry.csId)) {
    232 //                          List<Concept> meshConcepts = conceptService.getConceptsByNotation(meshTag, SCOPE, 1, umlsBranch);
    233 //                          if (!meshConcepts.isEmpty()) {
    234 //                              final Concept meshConcept = meshConcepts.get(0);
    235 //                              tagService.createTag(meshConcept.getUuid());
    236 //                              tags.add(meshConcept);
    237 //                             
    238 //                              isUsedForTags = true;
    239 //                              meshConceptFound = true;
    240 //                          } else {
    241 //                              logger.warn("Could not tag CS concept {} with mesh cui {}", entry.csId, meshTag);
    242 //                          }
    243 //                  }
    244 //                 
    245 //                  if (meshConceptFound) {
    246 //                      break;
    247 //                  }
     229//              boolean meshConceptFound = false;
     230//             
     231//              if (chemspiderMeshTagMapping.containsKey(meshTag) && chemspiderMeshTagMapping.get(meshTag).contains(entry.csId)) {
     232//                  List<Concept> meshConcepts = conceptService.getConceptsByNotation(meshTag, SCOPE, 1, umlsBranch);
     233//                  if (!meshConcepts.isEmpty()) {
     234//                      final Concept meshConcept = meshConcepts.get(0);
     235//                      tagService.createTag(meshConcept.getUuid());
     236//                      tags.add(meshConcept);
     237//                     
     238//                      isUsedForTags = true;
     239//                      meshConceptFound = true;
     240//                  } else {
     241//                      logger.warn("Could not tag CS concept {} with mesh cui {}", entry.csId, meshTag);
     242//                  }
     243//              }
     244//             
     245//              if (meshConceptFound) {
     246//                  break;
     247//              }
    248248//            }
    249249//           
     
    256256//           
    257257//            if (!entry.extIds.isEmpty() && isUsedForTags == false) {
    258 //              final String cui = entry.extIds.iterator().next();
     258//              final String cui = entry.extIds.iterator().next();
    259259//                final Changeset changeset = new ChangesetImpl().withAdd(new ActionImpl()
    260260//                        .withLabels(labels)
     
    264264//                 final List<Concept> concepts = conceptService.getConceptsByNotation(cui, SCOPE, 1, umlsBranch);
    265265//                 if (concepts.isEmpty()) {
    266 //                      // construct a new concept
    267 //                       final Concept c = new ConceptImpl.Builder()
    268 //                               .labels(labels)
    269 //                               .notations(notations)
    270 //                               .tags(tags)
    271 //                               .urls(urls)
    272 //                               .build();
    273 //                       conceptService.createConcept(c, chemspiderBranch);
    274 //                       
    275 //                       newConcepts++;
     266//                  // construct a new concept
     267//                   final Concept c = new ConceptImpl.Builder()
     268//                           .labels(labels)
     269//                           .notations(notations)
     270//                           .tags(tags)
     271//                           .urls(urls)
     272//                           .build();
     273//                   conceptService.createConcept(c, chemspiderBranch);
     274//                   
     275//                   newConcepts++;
    276276//                 } else {
    277277//                     final Concept existingConcept = concepts.get(0);
    278278//                     try {
    279 //                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
    280 //                              logger.info("it goes wrong here");
    281 //                      }
    282 //                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
    283 //                     
    284 //                      updatedConcepts++;
     279//                      if (existingConcept.getUuid().equals("e0bda807-cdfa-4f0d-b63b-88443d471b4f")) {
     280//                          logger.info("it goes wrong here");
     281//                      }
     282//                      conceptService.updateConcept(existingConcept.getUuid(), changeset, chemspiderBranch);
     283//                     
     284//                      updatedConcepts++;
    285285//                     } catch (IllegalArgumentException e) {
    286 //                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
    287 //                      unadded++;
     286//                      logger.warn("Wrong setup passed (CS id "+entry.csId+")", e);
     287//                      unadded++;
    288288//                     }
    289289//                 }
     
    302302           
    303303            counter++;
    304                 if (counter >= 5000) {
    305                         tx.success();
    306                         tx.finish();
    307                         tx = graphTemplate.getGraphDb().beginTx();
    308                         logger.info("Another 5k concepts processed");
    309                         lastCommitted += counter;
    310                         counter = 0;
    311                 }
     304            if (counter >= 5000) {
     305                tx.success();
     306                tx.finish();
     307                tx = graphTemplate.getGraphDb().beginTx();
     308                logger.info("Another 5k concepts processed");
     309                lastCommitted += counter;
     310                counter = 0;
     311            }
    312312        }
    313313       
    314314        try {
    315                 tx.success();
    316                 tx.finish();
     315            tx.success();
     316            tx.finish();
    317317        } catch (Exception e) {
    318                 logger.error("Failed to commit the final transaction", e);
     318            logger.error("Failed to commit the final transaction", e);
    319319        }
    320320
     
    379379                break;
    380380            case TITLE:
    381                 entry.title = objectValue;
    382                 break;
     381                entry.title = objectValue;
     382                break;
    383383//            case SMILES:
    384384//                entry.smiles = objectValue;
     
    389389                // tmp
    390390                if (!dupIds.containsKey(entry.csId)) {
    391                         dupIds.put(entry.csId, new ArrayList<String>());
     391                    dupIds.put(entry.csId, new ArrayList<String>());
    392392                }
    393393                dupIds.get(entry.csId).add(objectValue);
     
    402402                break;
    403403            case LANG:
    404                 entry.synonyms.add(lastSynonym + " " +objectValue);
    405                 break;
     404                entry.synonyms.add(lastSynonym + " " +objectValue);
     405                break;
    406406            default:
    407407                break;
Note: See TracChangeset for help on using the changeset viewer.