remove specific version added
This commit is contained in:
parent
b3913ba9c1
commit
4bd37f8963
1
pom.xml
1
pom.xml
|
@ -534,7 +534,6 @@
|
|||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-resources-plugin</artifactId>
|
||||
<version>2.5</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>copy-enunciate-docs</id>
|
||||
|
|
|
@ -98,6 +98,7 @@ public class AccountingHandler {
|
|||
Node accountingNodeParent = node.getNode(NodeProperty.ACCOUNTING.toString());
|
||||
Node accountingNode = accountingNodeParent.addNode(UUID.randomUUID().toString(),AccountingEntryType.UPDATE.getNodeTypeDefinition());
|
||||
|
||||
|
||||
accountingNode.setProperty(USER, login);
|
||||
accountingNode.setProperty(DATE, Calendar.getInstance());
|
||||
accountingNode.setProperty(ITEM_NAME, title);
|
||||
|
@ -124,6 +125,30 @@ public class AccountingHandler {
|
|||
}
|
||||
}
|
||||
|
||||
public void createVersionDeleted(String title, String version, Session ses, Node node, String login, boolean saveHistory ) {
|
||||
try {
|
||||
|
||||
if (!node.hasNode(NodeProperty.ACCOUNTING.toString())){
|
||||
node.addNode(NodeProperty.ACCOUNTING.toString(), NodeProperty.NT_ACCOUNTING.toString());
|
||||
}
|
||||
|
||||
Node accountingNodeParent = node.getNode(NodeProperty.ACCOUNTING.toString());
|
||||
Node accountingNode = accountingNodeParent.addNode(UUID.randomUUID().toString(),AccountingEntryType.DELETE.getNodeTypeDefinition());
|
||||
|
||||
|
||||
accountingNode.setProperty(USER, login);
|
||||
accountingNode.setProperty(DATE, Calendar.getInstance());
|
||||
accountingNode.setProperty(ITEM_NAME, title);
|
||||
|
||||
accountingNode.setProperty(VERSION_ACCOUNTING, version);
|
||||
|
||||
|
||||
if (saveHistory) ses.save();
|
||||
} catch (RepositoryException e) {
|
||||
logger.warn("error trying to retrieve accountign node",e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void createFolderAddObj(String title, String itemType, String mimeType, Session ses, String login, Node parentNode, boolean saveHistory ) {
|
||||
try {
|
||||
|
|
|
@ -6,6 +6,7 @@ import java.util.List;
|
|||
|
||||
import javax.inject.Singleton;
|
||||
import javax.jcr.Node;
|
||||
import javax.jcr.RepositoryException;
|
||||
import javax.jcr.Session;
|
||||
import javax.jcr.version.Version;
|
||||
import javax.jcr.version.VersionHistory;
|
||||
|
@ -52,7 +53,7 @@ public class VersionHandler {
|
|||
logger.warn("cannot checkoutNode content node",e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public List<Version> getContentVersionHistory(Node node) {
|
||||
try {
|
||||
Session session = node.getSession();
|
||||
|
@ -73,5 +74,12 @@ public class VersionHandler {
|
|||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void removeContentVersion(Node node, String versionName) throws RepositoryException{
|
||||
Node contentNode = node.getNode(NodeConstants.CONTENT_NAME);
|
||||
VersionHistory history = contentNode.getSession().getWorkspace().getVersionManager().getVersionHistory(contentNode.getPath());
|
||||
history.removeVersion(versionName);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -636,24 +636,29 @@ public class ItemsManager extends Impersonable{
|
|||
ses = repository.getRepository().login(CredentialHandler.getAdminCredentials(context));
|
||||
authChecker.checkWriteAuthorizationControl(ses, currentUser, id, false);
|
||||
Node node = ses.getNodeByIdentifier(id);
|
||||
Item currentItem = node2Item.getItem(node, Excludes.ALL);
|
||||
Item currentItem = node2Item.getItem(node, Excludes.GET_ONLY_CONTENT);
|
||||
if (!(currentItem instanceof AbstractFileItem))
|
||||
throw new InvalidItemException("this item is not a file");
|
||||
|
||||
|
||||
List<Version> versions = versionHandler.getContentVersionHistory(node);
|
||||
|
||||
|
||||
boolean found = false;
|
||||
|
||||
for(Version version : versions)
|
||||
if (version.getName().equals(versionName)) {
|
||||
version.remove();
|
||||
boolean currentVersion = ((AbstractFileItem)currentItem).getContent().getStorageId().equals(version.getFrozenNode().getProperty(NodeProperty.STORAGE_ID.toString()).getString());
|
||||
if (currentVersion)
|
||||
throw new InvalidCallParameters("current version cannot be removed");
|
||||
versionHandler.removeContentVersion(node, versionName);
|
||||
accountingHandler.createVersionDeleted(currentItem.getTitle(), versionName, ses, node, currentUser, false);
|
||||
ses.save();
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!found) throw new InvalidItemException("the version "+versionName+" is not valid or is current version for item "+currentItem.getTitle());
|
||||
}catch(RepositoryException re ){
|
||||
log.error("jcr error downloading version", re);
|
||||
log.error("jcr error removing version", re);
|
||||
GXOutboundErrorResponse.throwException(new BackendGenericError(re));
|
||||
}catch(StorageHubException she ){
|
||||
log.error(she.getErrorMessage(), she);
|
||||
|
|
Loading…
Reference in New Issue