/* * * Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved. * * This file is part of Entando software. * Entando is a free software; * You can redistribute it and/or modify it * under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation; version 2. * * See the file License for the specific language governing permissions * and limitations under the License * * * * Copyright 2013 Entando S.r.l. (http://www.entando.com) All rights reserved. * */ package com.agiletec.plugins.jpversioning.aps.system.services.resource; import java.io.File; import java.util.ArrayList; import java.util.List; import com.agiletec.plugins.jpversioning.aps.ApsPluginBaseTestCase; import com.agiletec.aps.system.SystemConstants; import com.agiletec.aps.system.exception.ApsSystemException; import com.agiletec.aps.system.services.category.Category; import com.agiletec.aps.system.services.category.ICategoryManager; import com.agiletec.aps.system.services.group.Group; import com.agiletec.plugins.jacms.aps.system.JacmsSystemConstants; import com.agiletec.plugins.jacms.aps.system.services.resource.IResourceManager; import com.agiletec.plugins.jacms.aps.system.services.resource.model.BaseResourceDataBean; import com.agiletec.plugins.jacms.aps.system.services.resource.model.ResourceDataBean; import com.agiletec.plugins.jacms.aps.system.services.resource.model.ResourceInterface; import com.agiletec.plugins.jpversioning.aps.system.JpversioningSystemConstants; import com.agiletec.plugins.jpversioning.aps.system.services.resource.TrashedResourceManager; import java.io.InputStream; /** * @author G.Cocco */ public class TestTrashedResourceManager extends ApsPluginBaseTestCase { @Override protected void setUp() throws Exception { super.setUp(); this.init(); } public void testSearchTrashedResourceIds() throws ApsSystemException { String resourceTypeCode = null; String text = null; List<String> allowedGroups = new ArrayList<String>(); List<String> resourceIds = this._trashedResourceManager.searchTrashedResourceIds(resourceTypeCode, text, allowedGroups); assertNotNull(resourceIds); assertEquals(6, resourceIds.size()); assertEquals("67", resourceIds.get(0)); assertEquals("68", resourceIds.get(1)); resourceTypeCode = "Image"; text = "qq"; allowedGroups = new ArrayList<String>(); allowedGroups.add("customers"); resourceIds = this._trashedResourceManager.searchTrashedResourceIds(resourceTypeCode, text, allowedGroups); assertNotNull(resourceIds); assertEquals(1, resourceIds.size()); assertEquals("69", resourceIds.get(0)); } public void testAdd_Trash_LoadFromTrash_RemoveFromTrash() throws Throwable { String mainGroup = Group.FREE_GROUP_NAME; String resDescrToAdd = "Versioning test 1"; String resourceType = "Image"; String categoryCodeToAdd = "resCat1"; List<String> groups = new ArrayList<String>(); groups.add(Group.FREE_GROUP_NAME); try { ResourceDataBean bean = this.getMockResource(resourceType, mainGroup, resDescrToAdd, categoryCodeToAdd); // add the resource this._resourceManager.addResource(bean); List<String> resources = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); assertEquals(1, resources.size()); ResourceInterface resource = _resourceManager.loadResource(resources.get(0)); assertNotNull(resource); // move into the trash _resourceManager.deleteResource(resource); // load from Trash ResourceInterface resourceLoadedFromTrash = this._trashedResourceManager.loadTrashedResource(resource.getId()); assertNotNull(resourceLoadedFromTrash); assertEquals(resDescrToAdd, resourceLoadedFromTrash.getDescr()); assertEquals(mainGroup, resourceLoadedFromTrash.getMainGroup()); assertEquals(resourceType, resourceLoadedFromTrash.getType()); // del from trash this._trashedResourceManager.removeFromTrash(resource.getId()); } catch (Throwable t) { List<String> resources = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); if (null != resources && resources.size() > 0) { for (int i = 0; i < resources.size(); i++) { String id = resources.get(i); this._trashedResourceManager.removeFromTrash(id); ResourceInterface resource = this._resourceManager.loadResource(id); this._resourceManager.deleteResource(resource); } } throw t; } } public void testAdd_Trash_RestoreResource_DeleteFromArchive() throws Throwable { String mainGroup = Group.FREE_GROUP_NAME; String resDescrToAdd = "Versioning test 2"; String resourceType = "Image"; String categoryCodeToAdd = "resCat1"; ResourceDataBean bean = this.getMockResource(resourceType, mainGroup, resDescrToAdd, categoryCodeToAdd); List<String> groups = new ArrayList<String>(); groups.add(Group.FREE_GROUP_NAME); try { // add the resource this._resourceManager.addResource(bean); List<String> resources = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); assertEquals(1, resources.size()); String resourceId = resources.get(0); ResourceInterface resource = this._resourceManager.loadResource(resourceId); assertNotNull(resource); // move into the trash this._resourceManager.deleteResource(resource); resources = _resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); assertEquals(0, resources.size()); // restore from Trash this._trashedResourceManager.restoreResource(resourceId); resources = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); assertEquals(1, resources.size()); resource = this._resourceManager.loadResource(resources.get(0)); // delete from archive and from trash _resourceManager.deleteResource(resource); resources = _resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); assertEquals(0, resources.size()); this._trashedResourceManager.removeFromTrash(resource.getId()); } catch (Throwable t) { List<String> resources = this._resourceManager.searchResourcesId(resourceType, resDescrToAdd, categoryCodeToAdd, groups); if (null != resources && resources.size() > 0) { for (int i = 0; i < resources.size(); i++) { String id = resources.get(i); this._trashedResourceManager.removeFromTrash(id); ResourceInterface resource = this._resourceManager.loadResource(id); this._resourceManager.deleteResource(resource); } } throw t; } } private ResourceDataBean getMockResource(String resourceType, String mainGroup, String resDescrToAdd, String categoryCodeToAdd) { File file = new File("target/test/entando_logo.jpg"); BaseResourceDataBean bean = new BaseResourceDataBean(file); bean.setDescr(resDescrToAdd); bean.setMainGroup(mainGroup); bean.setResourceType(resourceType); bean.setMimeType("image/jpeg"); List<Category> categories = new ArrayList<Category>(); ICategoryManager catManager = (ICategoryManager) this.getService(SystemConstants.CATEGORY_MANAGER); Category cat = catManager.getCategory(categoryCodeToAdd); categories.add(cat); bean.setCategories(categories); return bean; } private void init() throws Exception { try { this._resourceManager = (IResourceManager) this.getService(JacmsSystemConstants.RESOURCE_MANAGER); this._trashedResourceManager = (TrashedResourceManager) this.getService(JpversioningSystemConstants.TRASHED_RESOURCE_MANAGER); } catch (Throwable t) { throw new Exception(t); } } private IResourceManager _resourceManager; private TrashedResourceManager _trashedResourceManager; }