r419 - in trunk: simexplorer-is-security/src/java/META-INF simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service simexplorer-is-service/src/java/fr/cemagref/simexplorer
Author: glandais Date: 2008-01-22 18:37:33 +0000 (Tue, 22 Jan 2008) New Revision: 419 Added: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java Modified: trunk/simexplorer-is-security/src/java/META-INF/orm.xml trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java Log: Secured service Modified: trunk/simexplorer-is-security/src/java/META-INF/orm.xml =================================================================== --- trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/META-INF/orm.xml 2008-01-22 18:37:33 UTC (rev 419) @@ -17,7 +17,8 @@ <id name="id"> <generated-value strategy="SEQUENCE" /> </id> - <many-to-many name="groups" target-entity="Group" fetch="EAGER"> + <many-to-many name="groups" target-entity="Group" + fetch="EAGER"> <cascade> <cascade-all /> </cascade> @@ -62,4 +63,19 @@ </attributes> </entity> + <entity class="Permission"> + <table name="PERMISSIONS" /> + <attributes> + <id name="id"> + <generated-value strategy="SEQUENCE" /> + </id> + <basic name="businessId" /> + <basic name="canRead" /> + <basic name="canWrite" /> + <basic name="canAdmin" /> + <basic name="isOwner" /> + <one-to-one name="actor" fetch="EAGER" /> + </attributes> + </entity> + </entity-mappings> Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManager.java 2008-01-22 18:37:33 UTC (rev 419) @@ -2,7 +2,13 @@ import javax.ejb.Local; +import fr.cemagref.simexplorer.is.security.entities.Permission; + @Local public interface CredentialManager { + public Permission getPermission(String token, String businessId); + + public Permission saveElement(String token, String businessId); + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/credentials/CredentialManagerImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -1,10 +1,71 @@ package fr.cemagref.simexplorer.is.security.credentials; +import java.util.List; + +import javax.ejb.EJB; import javax.ejb.Local; import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import fr.cemagref.simexplorer.is.security.dao.DaoSecurity; +import fr.cemagref.simexplorer.is.security.entities.Actor; +import fr.cemagref.simexplorer.is.security.entities.Group; +import fr.cemagref.simexplorer.is.security.entities.Permission; + @Stateless(name = "CredentialManager") @Local(CredentialManager.class) + at TransactionAttribute(TransactionAttributeType.REQUIRED) public class CredentialManagerImpl implements CredentialManager { + @EJB + private DaoSecurity dao; + + private int getRelativeLevel(Actor actor, Permission permission) { + int level = -1; + if (actor.equals(permission.getActor())) { + return 0; + } else { + List<Group> groups = actor.getGroups(); + for (Group group : groups) { + int levelGroup = getRelativeLevel(group, permission); + if (levelGroup >= 0) { + level = levelGroup + 1; + } + } + } + return level; + } + + public Permission getPermission(String token, String businessId) { + Permission p = null; + + Actor actor = dao.getLoggedUser(token); + List<Permission> permissions = dao.getPermissions(businessId); + int minLevel = 0; + + for (Permission permission : permissions) { + int relativeLevel = getRelativeLevel(actor, permission); + if (relativeLevel >= 0) { + if (p == null || minLevel > relativeLevel) { + p = permission; + minLevel = relativeLevel; + } + } + } + return p; + } + + public Permission saveElement(String token, String businessId) { + Permission p = new Permission(); + p.setActor(dao.getLoggedUser(token)); + p.setBusinessId(businessId); + p.setCanAdmin(true); + p.setCanRead(true); + p.setCanWrite(true); + p.setOwner(true); + dao.savePermission(p); + return p; + } + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurity.java 2008-01-22 18:37:33 UTC (rev 419) @@ -4,6 +4,7 @@ import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.LoginAction; +import fr.cemagref.simexplorer.is.security.entities.Permission; import fr.cemagref.simexplorer.is.security.entities.User; public interface DaoSecurity { @@ -48,4 +49,8 @@ public List<Group> getGroupsOfGroup(Group group); + public List<Permission> getPermissions(String businessId); + + public void savePermission(Permission p); + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/dao/DaoSecurityImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -10,6 +10,7 @@ import fr.cemagref.simexplorer.is.security.entities.Actor; import fr.cemagref.simexplorer.is.security.entities.Group; import fr.cemagref.simexplorer.is.security.entities.LoginAction; +import fr.cemagref.simexplorer.is.security.entities.Permission; import fr.cemagref.simexplorer.is.security.entities.User; @Stateless(name = "DaoSecurity") @@ -166,4 +167,15 @@ return groups; } + public List<Permission> getPermissions(String businessId) { + List<Permission> permissions = em.createQuery( + "select p from Permission p where p.businessId=:businessId") + .setParameter("businessId", businessId).getResultList(); + return permissions; + } + + public void savePermission(Permission p) { + em.persist(p); + } + } Modified: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Actor.java 2008-01-22 18:37:33 UTC (rev 419) @@ -34,14 +34,14 @@ private int hashCodeGroups(List<Group> groups) { final int prime = 31; - int result = 1; + int result = 1; result = prime * result + groups.size(); for (Group group : groups) { - result = prime * result + ((group == null) ? 0 : group.hashCode()); - } - return result; + result = prime * result + ((group == null) ? 0 : group.getId()); + } + return result; } - + @Override public int hashCode() { final int prime = 31; @@ -67,8 +67,10 @@ if (group1 == null) { if (group2 != null) return false; - } else if (!group1.equals(group2)) + } else if (group1.getId() == null) { return false; + } else if (!group1.getId().equals(group2.getId())) + return false; } return true; } Added: trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java =================================================================== --- trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java (rev 0) +++ trunk/simexplorer-is-security/src/java/fr/cemagref/simexplorer/is/security/entities/Permission.java 2008-01-22 18:37:33 UTC (rev 419) @@ -0,0 +1,69 @@ +package fr.cemagref.simexplorer.is.security.entities; + +public class Permission { + + private Integer id; + private String businessId; + private Actor actor; + private boolean canRead; + private boolean canWrite; + private boolean canAdmin; + private boolean isOwner; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getBusinessId() { + return businessId; + } + + public void setBusinessId(String businessId) { + this.businessId = businessId; + } + + public Actor getActor() { + return actor; + } + + public void setActor(Actor actor) { + this.actor = actor; + } + + public boolean isCanRead() { + return canRead; + } + + public void setCanRead(boolean canRead) { + this.canRead = canRead; + } + + public boolean isCanWrite() { + return canWrite; + } + + public void setCanWrite(boolean canWrite) { + this.canWrite = canWrite; + } + + public boolean isCanAdmin() { + return canAdmin; + } + + public void setCanAdmin(boolean canAdmin) { + this.canAdmin = canAdmin; + } + + public boolean isOwner() { + return isOwner; + } + + public void setOwner(boolean isOwner) { + this.isOwner = isOwner; + } + +} Modified: trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java =================================================================== --- trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-security/src/test/fr/cemagref/simexplorer/is/security/test/SecurityTestCase.java 2008-01-22 18:37:33 UTC (rev 419) @@ -39,12 +39,20 @@ String token = authenticationService .loginUser("superadmin", "password"); + Group everybody = authenticationService.saveGroup(token, "everybody", + authenticationService.getLoggedUser(token)); + + User me = authenticationService.getLoggedUser(token); + me.getGroups().add(everybody); + authenticationService.updateUser(token, me); + User[] simpleUsers = new User[20]; for (int i = 0; i < 20; i++) { simpleUsers[i] = authenticationService.saveUser(token, "user" + i, "landais+simtest at codelutin.com"); simpleUsers[i].setAdmin(false); simpleUsers[i].setSuperAdmin(false); + simpleUsers[i].getGroups().add(everybody); authenticationService.updateUser(token, simpleUsers[i]); } @@ -55,6 +63,7 @@ "landais+simtest at codelutin.com"); adminUsers[i].setAdmin(true); adminUsers[i].setSuperAdmin(false); + adminUsers[i].getGroups().add(everybody); authenticationService.updateUser(token, adminUsers[i]); groups[i] = authenticationService.saveGroup(token, "group" + i, Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceCommon.java 2008-01-22 18:37:33 UTC (rev 419) @@ -80,33 +80,33 @@ } public MetaDataEntity getMetadata(String token, String uuid) throws Exception { - return storageEngine.getMetadata(uuid); + return storageEngine.getMetadata(token, uuid); } public MetaDataEntity getMetadata(String token, String uuid, String version) throws Exception { - return storageEngine.getMetadata(uuid, new Version(version)); + return storageEngine.getMetadata(token, uuid, new Version(version)); } public MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception { - return storageEngine.findFullText(query, onlyLatest, indexStart, count, + return storageEngine.findFullText(token, query, onlyLatest, indexStart, count, dateOrder); } public int findFullTextCount(String token, String query, boolean onlyLatest) throws Exception { - return storageEngine.findFullTextCount(query, onlyLatest); + return storageEngine.findFullTextCount(token, query, onlyLatest); } public int findApplicationsCount(String token, boolean onlyLatest) throws Exception { - return storageEngine.findElementsByTypeCount(VALUE_METADATA_TYPE_EA, + return storageEngine.findElementsByTypeCount(token, VALUE_METADATA_TYPE_EA, onlyLatest); } public MetaDataEntity[] findApplications(String token, boolean onlyLatest, int start, int count, int dateOrder) throws Exception { - return storageEngine.findElementsByType(VALUE_METADATA_TYPE_EA, + return storageEngine.findElementsByType(token, VALUE_METADATA_TYPE_EA, onlyLatest, start, count, dateOrder); } @@ -116,7 +116,7 @@ LoggableElement le = (LoggableElement) BaseEntityFactory.getFactory( LoggableElement.class.getPackage().getName() + "." + mde.getType()) - .loadElement(storageEngine.retrieveData(mde, KEY_XML)); + .loadElement(storageEngine.retrieveData(token, mde, KEY_XML)); return le; } @@ -162,7 +162,7 @@ public void exportElement(String token, RemoteOutputStream xmlOutputStream, String uuid, String version) throws Exception { MetaDataEntity mde = getMetadata(uuid, version); - InputStream xmlStream = storageEngine.retrieveData(mde, KEY_XML); + InputStream xmlStream = storageEngine.retrieveData(token, mde, KEY_XML); OutputStream os = RemoteOutputStreamClient.wrap(xmlOutputStream); // Buffer copy stream to stream @@ -247,7 +247,7 @@ .retrieveTempData(entry.getValue())); } } - storageEngine.saveElement(metaData, attachments); + storageEngine.saveElement(token, metaData, attachments); storageEngine.commit(); return metaData; @@ -256,7 +256,7 @@ private void processVersionRules(String token, MetaDataEntity metaData) throws Exception { // Check existing version in storage - MetaDataEntity previousVersion = storageEngine.getMetadata(metaData + MetaDataEntity previousVersion = storageEngine.getMetadata(token, metaData .getUuid(), metaData.getVersion()); /* * MetaDataEntity parentData = storageEngine.getElementVersion(metaData Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/service/StorageServiceServer.java 2008-01-22 18:37:33 UTC (rev 419) @@ -7,7 +7,7 @@ import org.jboss.annotation.ejb.RemoteBinding; import fr.cemagref.simexplorer.is.security.service.AuthenticationService; -import fr.cemagref.simexplorer.is.storage.engine.StorageEngineSecuImpl; +import fr.cemagref.simexplorer.is.storage.engine.StorageEngineImpl; @Stateless(name = "StorageService") @Remote(StorageService.class) @@ -18,7 +18,9 @@ private AuthenticationService authenticationService; public StorageServiceServer() { - storageEngine = new StorageEngineSecuImpl(); + // FIXME + // storageEngine = new StorageEngineSecuImpl(); + storageEngine = new StorageEngineImpl(); super.firstOpen(); } Modified: trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java =================================================================== --- trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-service/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineSecuImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -4,102 +4,124 @@ import java.util.List; import java.util.Map; +import javax.ejb.EJB; + import fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity; import fr.cemagref.simexplorer.is.entities.metadata.Version; +import fr.cemagref.simexplorer.is.security.credentials.CredentialManager; +import fr.cemagref.simexplorer.is.security.entities.Permission; public class StorageEngineSecuImpl extends StorageEngineImpl { + @EJB + private CredentialManager credentialManager; + @Override - public void deleteElement(String uuid, Version version) throws Exception { - // TODO Auto-generated method stub - super.deleteElement(uuid, version); + public void deleteElement(String token, String uuid, Version version) + throws Exception { + Permission permission = credentialManager.getPermission(token, uuid); + // TODO check candelete = canadmin + if (permission != null && permission.isCanAdmin()) { + super.deleteElement(token, uuid, version); + } } @Override - public void deleteElements(String uuid) throws Exception { - // TODO Auto-generated method stub - super.deleteElements(uuid); + public void deleteElements(String token, String uuid) throws Exception { + Permission permission = credentialManager.getPermission(token, uuid); + // TODO check candelete = canadmin + if (permission != null && permission.isCanAdmin()) { + super.deleteElements(token, uuid); + } } @Override - public void deleteTempData(String id) throws Exception { - // TODO Auto-generated method stub - super.deleteTempData(id); + public MetaDataEntity[] findElementsByType(String token, String type, + boolean onlyLatest, int start, int count, int dateOrder) + throws Exception { + MetaDataEntity[] list = super.findElementsByType(token, type, + onlyLatest, start, count, dateOrder); + // TODO how to filter without losing pagination? + return list; } @Override - public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest, - int start, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findElementsByType(type, onlyLatest, start, count, - dateOrder); + public int findElementsByTypeCount(String token, String type, + boolean onlyLatest) throws Exception { + // TODO how to filter without losing pagination? + return super.findElementsByTypeCount(token, type, onlyLatest); } @Override - public int findElementsByTypeCount(String type, boolean onlyLatest) + public MetaDataEntity[] findFullText(String token, String query, + boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findElementsByTypeCount(type, onlyLatest); - } - - @Override - public MetaDataEntity[] findFullText(String query, boolean onlyLatest, - int indexStart, int count, int dateOrder) throws Exception { - // TODO Auto-generated method stub - return super.findFullText(query, onlyLatest, indexStart, count, + // TODO how to filter without losing pagination? + return super.findFullText(token, query, onlyLatest, indexStart, count, dateOrder); } @Override - public int findFullTextCount(String query, boolean onlyLatest) + public int findFullTextCount(String token, String query, boolean onlyLatest) throws Exception { - // TODO Auto-generated method stub - return super.findFullTextCount(query, onlyLatest); + // TODO how to filter without losing pagination? + return super.findFullTextCount(token, query, onlyLatest); } @Override - public MetaDataEntity getMetadata(String uuid, Version version) + public MetaDataEntity getMetadata(String token, String uuid, Version version) throws Exception { - // TODO Auto-generated method stub - return super.getMetadata(uuid, version); + MetaDataEntity mde = null; + Permission permission = credentialManager.getPermission(token, uuid); + if (permission.isCanRead()) { + mde = super.getMetadata(token, uuid, version); + } + return mde; } @Override - public MetaDataEntity getMetadata(String uuid) throws Exception { - // TODO Auto-generated method stub - return super.getMetadata(uuid); + public MetaDataEntity getMetadata(String token, String uuid) + throws Exception { + MetaDataEntity mde = null; + Permission permission = credentialManager.getPermission(token, uuid); + if (permission.isCanRead()) { + mde = super.getMetadata(token, uuid); + } + return mde; } @Override - public List<Version> getVersions(String uuid) throws Exception { - // TODO Auto-generated method stub - return super.getVersions(uuid); - } - - @Override - public InputStream retrieveData(MetaDataEntity entity, String field) + public List<Version> getVersions(String token, String uuid) throws Exception { - // TODO Auto-generated method stub - return super.retrieveData(entity, field); + List<Version> versions = null; + Permission permission = credentialManager.getPermission(token, uuid); + if (permission.isCanRead()) { + versions = super.getVersions(token, uuid); + } + return versions; } @Override - public InputStream retrieveTempData(String id) throws Exception { - // TODO Auto-generated method stub - return super.retrieveTempData(id); + public InputStream retrieveData(String token, MetaDataEntity entity, + String field) throws Exception { + InputStream stream = null; + Permission permission = credentialManager.getPermission(token, entity + .getUuid()); + if (permission.isCanRead()) { + stream = super.retrieveData(token, entity, field); + } + return stream; } @Override - public void saveElement(MetaDataEntity element, + public void saveElement(String token, MetaDataEntity element, Map<String, InputStream> attachments) throws Exception { - // TODO Auto-generated method stub - super.saveElement(element, attachments); + Permission permission = credentialManager.getPermission(token, element + .getUuid()); + if (permission.isCanWrite()) { + super.saveElement(token, element, attachments); + credentialManager.saveElement(token, element.getUuid()); + } } - @Override - public String storeTempData(InputStream stream) throws Exception { - // TODO Auto-generated method stub - return super.storeTempData(stream); - } - } Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngine.java 2008-01-22 18:37:33 UTC (rev 419) @@ -39,7 +39,7 @@ * Attachments related * @throws Exception */ - public abstract void saveElement(MetaDataEntity element, + public abstract void saveElement(String token, MetaDataEntity element, Map<String, InputStream> attachments) throws Exception; /** @@ -50,7 +50,7 @@ * @return The element * @throws Exception */ - public abstract MetaDataEntity getMetadata(String uuid) throws Exception; + public abstract MetaDataEntity getMetadata(String token, String uuid) throws Exception; /** * Retrieve versions of an element<br> @@ -62,7 +62,7 @@ * * @throws Exception */ - public abstract List<Version> getVersions(String uuid) throws Exception; + public abstract List<Version> getVersions(String token, String uuid) throws Exception; /** * Retrieve an element in a specific version @@ -72,7 +72,7 @@ * @return * @throws Exception */ - public abstract MetaDataEntity getMetadata(String uuid, Version version) + public abstract MetaDataEntity getMetadata(String token, String uuid, Version version) throws Exception; /** @@ -85,7 +85,7 @@ * @return Data stream * @throws Exception */ - public abstract InputStream retrieveData(MetaDataEntity entity, String field) + public abstract InputStream retrieveData(String token, MetaDataEntity entity, String field) throws Exception; /** @@ -96,7 +96,7 @@ * @return * @throws Exception */ - public abstract int findFullTextCount(String query, boolean onlyLatest) + public abstract int findFullTextCount(String token, String query, boolean onlyLatest) throws Exception; /** @@ -110,7 +110,7 @@ * @return * @throws Exception */ - public abstract MetaDataEntity[] findFullText(String query, + public abstract MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception; @@ -125,7 +125,7 @@ * @return * @throws Exception */ - public abstract MetaDataEntity[] findElementsByType(String type, + public abstract MetaDataEntity[] findElementsByType(String token, String type, boolean onlyLatest, int start, int count, int dateOrder) throws Exception; @@ -137,7 +137,7 @@ * @return * @throws Exception */ - public abstract int findElementsByTypeCount(String type, boolean onlyLatest) + public abstract int findElementsByTypeCount(String token, String type, boolean onlyLatest) throws Exception; /** @@ -146,7 +146,7 @@ * @param uuid * @throws Exception */ - public abstract void deleteElements(String uuid) throws Exception; + public abstract void deleteElements(String token, String uuid) throws Exception; /** * Delete one element @@ -155,7 +155,7 @@ * @param version * @throws Exception */ - public abstract void deleteElement(String uuid, Version version) + public abstract void deleteElement(String token, String uuid, Version version) throws Exception; /** Modified: trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java =================================================================== --- trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-01-22 16:32:43 UTC (rev 418) +++ trunk/simexplorer-is-storage/src/java/fr/cemagref/simexplorer/is/storage/engine/StorageEngineImpl.java 2008-01-22 18:37:33 UTC (rev 419) @@ -81,7 +81,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#saveElement(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.util.Map) */ - public void saveElement(MetaDataEntity element, + public void saveElement(String token, MetaDataEntity element, Map<String, InputStream> attachments) throws Exception { // Save all attachments in system @@ -124,7 +124,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetadata(java.lang.String) */ - public MetaDataEntity getMetadata(String uuid) throws Exception { + public MetaDataEntity getMetadata(String token, String uuid) throws Exception { MetaDataEntity mde = null; Set<MetaDataEntity> set = database.findElementsById(uuid, true); if (!set.isEmpty()) { @@ -136,14 +136,14 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getVersions(java.lang.String) */ - public List<Version> getVersions(String uuid) throws Exception { + public List<Version> getVersions(String token, String uuid) throws Exception { return database.getVersions(uuid); } /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#getMetadata(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version) */ - public MetaDataEntity getMetadata(String uuid, Version version) + public MetaDataEntity getMetadata(String token, String uuid, Version version) throws Exception { MetaDataEntity mde = database.getElement(uuid, version); return mde; @@ -152,7 +152,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#retrieveData(fr.cemagref.simexplorer.is.entities.metadata.MetaDataEntity, java.lang.String) */ - public InputStream retrieveData(MetaDataEntity entity, String field) + public InputStream retrieveData(String token, MetaDataEntity entity, String field) throws Exception { InputStream result = attachmentHandler.retrieveData(entity, field); return result; @@ -161,7 +161,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullTextCount(java.lang.String, boolean) */ - public int findFullTextCount(String query, boolean onlyLatest) + public int findFullTextCount(String token, String query, boolean onlyLatest) throws Exception { return database.findElementsByContentSearchCount(query, onlyLatest); } @@ -169,7 +169,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findFullText(java.lang.String, boolean, int, int, int) */ - public MetaDataEntity[] findFullText(String query, boolean onlyLatest, + public MetaDataEntity[] findFullText(String token, String query, boolean onlyLatest, int indexStart, int count, int dateOrder) throws Exception { MetaDataEntity[] result = database.findElementsByContentSearch(query, onlyLatest, indexStart, count, dateOrder).toArray( @@ -180,7 +180,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElementsByType(java.lang.String, boolean, int, int, int) */ - public MetaDataEntity[] findElementsByType(String type, boolean onlyLatest, + public MetaDataEntity[] findElementsByType(String token, String type, boolean onlyLatest, int start, int count, int dateOrder) throws Exception { MetaDataEntity[] result = database.findElementsByType(type, onlyLatest, start, count, dateOrder).toArray(new MetaDataEntity[0]); @@ -190,7 +190,7 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#findElementsByTypeCount(java.lang.String, boolean) */ - public int findElementsByTypeCount(String type, boolean onlyLatest) + public int findElementsByTypeCount(String token, String type, boolean onlyLatest) throws Exception { return database.findElementsByTypeCount(type, onlyLatest); } @@ -200,18 +200,18 @@ /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteElements(java.lang.String) */ - public void deleteElements(String uuid) throws Exception { - List<Version> versions = getVersions(uuid); + public void deleteElements(String token, String uuid) throws Exception { + List<Version> versions = getVersions(token, uuid); for (Version version : versions) { - deleteElement(uuid, version); + deleteElement(token, uuid, version); } } /* (non-Javadoc) * @see fr.cemagref.simexplorer.is.storage.engine.StorageEngine#deleteElement(java.lang.String, fr.cemagref.simexplorer.is.entities.metadata.Version) */ - public void deleteElement(String uuid, Version version) throws Exception { - MetaDataEntity element = getMetadata(uuid, version); + public void deleteElement(String token, String uuid, Version version) throws Exception { + MetaDataEntity element = getMetadata(token, uuid, version); Map<String, ContentType> attachments = element.getAttachments(); for (Map.Entry<String, ContentType> entry : attachments.entrySet()) { attachmentHandler.deleteData(element, entry.getKey());
participants (1)
-
glandais@users.labs.libre-entreprise.org