Beginning interface for AVM locking.

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5531 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
Britt Park
2007-04-24 01:05:24 +00:00
parent 53c0c9739f
commit 5fed27a6d9
2 changed files with 246 additions and 0 deletions

View File

@@ -0,0 +1,156 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing
*/
package org.alfresco.service.cmr.avm.locking;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import org.alfresco.repo.attributes.Attribute;
import org.alfresco.repo.attributes.BooleanAttributeImpl;
import org.alfresco.repo.attributes.MapAttribute;
import org.alfresco.repo.attributes.MapAttributeImpl;
import org.alfresco.repo.attributes.StringAttributeImpl;
/**
* Struct representing an AVM lock.
* @author britt
*/
public class AVMLock implements Serializable
{
public static String PATH = "path";
public static String STORE = "store";
public static String OWNERS = "owners";
public static String WEBPROJECT = "webproject";
public static String TYPE = "type";
private static final long serialVersionUID = -8026344276097527239L;
/**
* The store relative path of the lock.
*/
private String fPath;
/**
* The store of the actual locked version.
*/
private String fStore;
/**
* The list of users who can access the locked asset.
*/
private List<String> fOwners;
/**
* The web project for which this lock applies.
*/
private String fWebProject;
/**
* The type of the lock.
*/
private AVMLockingService.Type fType;
public AVMLock(String webProject,
String store,
String path,
AVMLockingService.Type type,
List<String> owners)
{
fWebProject = webProject;
fStore = store;
fPath = path;
fType = type;
fOwners = owners;
}
public AVMLock(Attribute lockData)
{
fPath = lockData.get(PATH).getStringValue();
fStore = lockData.get(STORE).getStringValue();
fOwners = new ArrayList<String>(lockData.get(OWNERS).keySet());
fType = AVMLockingService.Type.valueOf(lockData.get(TYPE).getStringValue());
fWebProject = lockData.get(WEBPROJECT).getStringValue();
}
public Attribute getAttribute()
{
MapAttribute lockData = new MapAttributeImpl();
lockData.put(PATH, new StringAttributeImpl(fPath));
lockData.put(STORE, new StringAttributeImpl(fStore));
lockData.put(TYPE, new StringAttributeImpl(fType.name()));
lockData.put(WEBPROJECT, new StringAttributeImpl(fWebProject));
MapAttribute owners = new MapAttributeImpl();
for (String owner : fOwners)
{
// The value is a dummy.
owners.put(owner, new BooleanAttributeImpl(true));
}
lockData.put(OWNERS, owners);
return lockData;
}
/**
* @return the owners
*/
public List<String> getOwners()
{
return fOwners;
}
/**
* @return the Path
*/
public String getPath()
{
return fPath;
}
/**
* @return the Store
*/
public String getStore()
{
return fStore;
}
/**
* @return the Type
*/
public AVMLockingService.Type getType()
{
return fType;
}
/**
* @return the WebProject
*/
public String getWebProject()
{
return fWebProject;
}
}

View File

@@ -0,0 +1,90 @@
/*
* Copyright (C) 2005-2007 Alfresco Software Limited.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* As a special exception to the terms and conditions of version 2.0 of
* the GPL, you may redistribute this Program in connection with Free/Libre
* and Open Source Software ("FLOSS") applications as described in Alfresco's
* FLOSS exception. You should have recieved a copy of the text describing
* the FLOSS exception, and it is also available here:
* http://www.alfresco.com/legal/licensing
*/
package org.alfresco.service.cmr.avm.locking;
import java.io.Serializable;
import java.util.List;
/**
* Service to handle AVM locking.
* @author britt
*/
public interface AVMLockingService
{
public enum Type implements Serializable
{
DISCRETIONARY
};
/**
* Creates a lock of the given type on a path.
* The lock is used to control access to all the
* corresponding paths in the given path's web project.
* @param lock The lock structure to create.
*/
public void lockPath(AVMLock lock);
/**
* Get a lock on a given path
* @param webProject The website for which to get the lock.
* @param path The path to check for a lock.
* @return The Lock structure or null if there is no lock.
*/
public AVMLock getLock(String webProject, String path);
/**
* Remove a lock.
* @param webProject The web project the lock lives in.
* @param path The store relative path of the lock.
*/
public void removeLock(String webProject, String path);
/**
* Get all the locks that a user owns.
* @param user The name of the user.
* @return The (possibly empty list) of the user's locks.
*/
public List<AVMLock> getUsersLocks(String user);
/**
* Get all locks in a webProject.
* @param webProject
* @return A List (possibly empty) of all locks in a web project.
*/
public List<AVMLock> getLocks(String webProject);
/**
* Add a web project.
* @param webProject The web project name.
*/
public void addWebProject(String webProject);
/**
* Remove a web project from the locking tables.
* @param webProject The web project name.
*/
public void removeWebProject(String webProject);
}