private void determineStoreState(DeploymentVersionObject deploymentVersionObject) {
synchronized(m_lock) {
List<String> fromShop = new ArrayList<String>();
ArtifactObject[] artifactsFromShop = m_repository.getNecessaryArtifacts(getID());
DeploymentVersionObject mostRecentVersion;
if (deploymentVersionObject == null) {
mostRecentVersion = m_repository.getMostRecentDeploymentVersion(getID());
}
else {
mostRecentVersion = deploymentVersionObject;
}
if (artifactsFromShop == null) {
if (mostRecentVersion == null) {
setStoreState(StoreState.New);
}
else {
setStoreState(StoreState.Unapproved);
}
return;
}
for (ArtifactObject ao : artifactsFromShop) {
fromShop.add(ao.getURL());
}
List<String> fromDeployment = new ArrayList<String>();
for (DeploymentArtifact da : getArtifactsFromDeployment()) {
fromDeployment.add(da.getDirective(DeploymentArtifact.DIRECTIVE_KEY_BASEURL));
}
if ((mostRecentVersion == null) && fromShop.isEmpty()) {
setStoreState(StoreState.New);
}
else if (fromShop.containsAll(fromDeployment) && fromDeployment.containsAll(fromShop)) {
// great, we have the same artifacts. But... do they need to be reprocessed?
for (ArtifactObject ao : artifactsFromShop) {
if (m_repository.needsNewVersion(ao, getID(), mostRecentVersion.getVersion())) {
setStoreState(StoreState.Unapproved);
return;
}
}
setStoreState(StoreState.Approved);