public String toString() {
   IConfiguredSite configSite = getConfiguredSite();
   String version = feature.getVersionedIdentifier().getVersion().toString();
   String location = configSite.getSite().getURL().getFile();
   return NLS.bind(
       Messages.DuplicateConflictsDialog_conflict, (new String[] {version, location}));
 }
 private static void addEntry(IFeature feature, IConfiguredSite csite, Hashtable featureTable) {
   String id = feature.getVersionedIdentifier().getIdentifier();
   ArrayList entries = (ArrayList) featureTable.get(id);
   if (entries == null) {
     entries = new ArrayList();
     featureTable.put(id, entries);
   }
   IdEntry entry = new IdEntry(feature, csite);
   boolean replaced = false;
   for (int i = 0; i < entries.size(); i++) {
     IdEntry existingEntry = (IdEntry) entries.get(i);
     IConfiguredSite existingSite = existingEntry.getConfiguredSite();
     if (existingSite.equals(entry.getConfiguredSite())) {
       // same site - replace it if not new
       if (entry.isInstallCandidate()) {
         entries.set(i, entry);
         entries.remove(existingEntry);
       }
       replaced = true;
       break;
     }
   }
   if (!replaced) entries.add(entry);
 }
 public boolean sameLevel(IdEntry entry) {
   VersionedIdentifier vid = feature.getVersionedIdentifier();
   VersionedIdentifier evid = entry.getFeature().getVersionedIdentifier();
   return vid.equals(evid);
 }
 public String getIdentifier() {
   return feature.getVersionedIdentifier().getIdentifier();
 }