// for restore operation
List<String> existedIdentifiers = new ArrayList<String>(); // InWorkspace
List<VersionImpl> notExistedVersions = new ArrayList<VersionImpl>();
LinkedHashMap<VersionImpl, NodeData> existedVersions = new LinkedHashMap<VersionImpl, NodeData>();
TransactionableDataManager dataManager = session.getTransientNodesManager().getTransactManager();
for (Version v : versions)
{
String versionableIdentifier = v.getContainingHistory().getVersionableUUID();
NodeData node = (NodeData) dataManager.getItemData(versionableIdentifier);
if (node != null)
{
existedVersions.put((VersionImpl) v, node);
existedIdentifiers.add(versionableIdentifier);
}
else
{
// not found, looking for parent
// SPEC: For every version V in S that corresponds to a missing node in
// the workspace, there must also be a parent of V in S
// =========================================
// Trying search for corresponding node,
// If we have a corr node and her parent in the existed list - all ok,
// otherwise exception will be thrown.
NodeData corrNode = null;
String versionableParentIdentifier = null;
if (!v.getSession().getWorkspace().getName().equals(session.getWorkspace().getName()))
{
TransactionableDataManager vDataManager =
((SessionImpl) v.getSession()).getTransientNodesManager().getTransactManager();
corrNode = (NodeData) vDataManager.getItemData(versionableIdentifier);
if (corrNode != null)
versionableParentIdentifier = corrNode.getParentIdentifier();
else
log.warn("Workspace.restore(). Correspondent node is not found " + versionableIdentifier);
}