private static final int PDB_ID_LENGTH = 4;
+ private static final String FAKED_ID = "faked_pdbid";
+
private String file;
private String type;
// this shouldn't happen, but could do if the id from the
// file is not the same as the id from the authority that provided
// the file
- return false;
+ if (!newEntry.fakedPDBId())
+ {
+ return false;
+ } // otherwise we can update
}
}
}
*/
String key = newProps.nextElement();
Object value = newEntry.getProperty(key);
+ if (FAKED_ID.equals(key))
+ {
+ // we never update the fake ID property
+ continue;
+ }
if (!value.equals(getProperty(key)))
{
setProperty(key, value);
return true;
}
+ /**
+ * set when Jalview has manufactured the ID using a local filename
+ * @return
+ */
+ public boolean fakedPDBId()
+ {
+ if (_hasProperty(FAKED_ID))
+ {
+ return true;
+ }
+ return false;
+ }
+ public void setFakedPDBId(boolean faked)
+ {
+ if (faked)
+ {
+ setProperty(FAKED_ID, Boolean.TRUE);
+ }
+ else
+ {
+ if (properties!=null) {
+ properties.remove(FAKED_ID);
+ }
+ }
+ }
+
private boolean _hasProperty(final String key)
{
return (properties != null && properties.containsKey(key));
pdbSequence.setName(getId() + "|" + pdbSequence.getName());
PDBEntry entry = new PDBEntry();
entry.setId(getId());
+ entry.setFakedPDBId(!isPPDBIdAvailable());
entry.setType(getStructureFileType());
if (chain.id != null)
{
seq.addPDBId(pdbe5);
assertEquals(4, seq.getAllPDBEntries().size());
assertSame(pdbe5, seq.getAllPDBEntries().get(3));
+
+ // add with a fake pdbid
+ // (models don't have an embedded ID)
+ String realId = "RealIDQ";
+ PDBEntry pdbe6 = new PDBEntry(realId,null,Type.PDB,"real/localpath");
+ PDBEntry pdbe7 = new PDBEntry("RealID/real/localpath","C",Type.MMCIF,"real/localpath");
+ pdbe7.setFakedPDBId(true);
+ seq.addPDBId(pdbe6);
+ assertEquals(5,seq.getAllPDBEntries().size());
+ seq.addPDBId(pdbe7);
+ assertEquals(5,seq.getAllPDBEntries().size());
+ assertFalse(pdbe6.fakedPDBId());
+ assertSame(pdbe6,seq.getAllPDBEntries().get(4));
+ assertEquals("C",pdbe6.getChainCode());
+ assertEquals(realId, pdbe6.getId());
}
@Test(
assertEquals(structureData.getId(), "localstruct");
assertNotNull(structureData.getSeqs());
/*
+ * local structures have a fake ID
+ */
+ assertTrue(structureData.getSeqs().get(0).getAllPDBEntries().get(0).fakedPDBId());
+ /*
* the ID is also the group for features derived from structure data
*/
String featureGroup = structureData.getSeqs().get(0)