* If newEntry has the same id (ignoring case), and doesn't have a conflicting
* file spec or chain code, then update this entry from its file and/or chain
* code.
*
* @param newEntry
* @return true if modifications were made
*/
public boolean updateFrom(PDBEntry newEntry)
{
if (this.equals(newEntry))
{
return true;
}
String newId = newEntry.getId();
if (newId == null || getId() == null)
{
return false; // shouldn't happen
}
/*
* id has to match (ignoring case)
*/
if (!getId().equalsIgnoreCase(newId))
{
return false;
}
/*
* Don't update if associated with different structure files
*/
String newFile = newEntry.getFile();
if (newFile != null && getFile() != null && !newFile.equals(getFile()))
{
return false;
}
/*
* Don't update if associated with different chains (ignoring case)
*/
String newChain = newEntry.getChainCode();
if (newChain != null && newChain.length() > 0 && getChainCode() != null
&& getChainCode().length() > 0
&& !getChainCode().equalsIgnoreCase(newChain))
{
return false;
}
/*
* set file path if not already set
*/
String newType = newEntry.getType();
if (getFile() == null && newFile != null)
{
setFile(newFile);
setType(newType);
}
/*
* set file type if new entry has it and we don't
* (for the case where file was not updated)
*/
if (getType() == null && newType != null)
{
setType(newType);
}
/*
* set chain if not already set (we excluded differing
* chains earlier) (ignoring case change only)
*/
if (newChain != null && newChain.length() > 0
&& !newChain.equalsIgnoreCase(getChainCode()))
{
setChainCode(newChain);
}
/*
* copy any new or modified properties
*/
Enumeration