mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-31 17:39:05 +00:00
RM-664 (Not possible to edit event without changing the name)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/modules/recordsmanagement/BRANCHES/V2.0@48749 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -22,79 +22,89 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* Records management event service interface
|
||||
*
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
public interface RecordsManagementEventService
|
||||
{
|
||||
/**
|
||||
* Register an event type
|
||||
*
|
||||
*
|
||||
* @param eventType event type
|
||||
*/
|
||||
void registerEventType(RecordsManagementEventType eventType);
|
||||
|
||||
|
||||
/**
|
||||
* Get a list of the event types
|
||||
*
|
||||
*
|
||||
* @return List<RecordsManagementEventType> list of the event types
|
||||
*/
|
||||
List<RecordsManagementEventType> getEventTypes();
|
||||
|
||||
|
||||
/**
|
||||
* Get the records management event type
|
||||
*
|
||||
*
|
||||
* @param eventType name
|
||||
* @return RecordsManagementEventType event type
|
||||
* @return RecordsManagementEventType event type
|
||||
*/
|
||||
RecordsManagementEventType getEventType(String eventTypeName);
|
||||
|
||||
|
||||
/**
|
||||
* Get the list of available events
|
||||
*
|
||||
*
|
||||
* @return List<RecordsManagementEvent> list of events
|
||||
*/
|
||||
List<RecordsManagementEvent> getEvents();
|
||||
|
||||
|
||||
/**
|
||||
* Get a records management event given its name. Returns null if the event name is not
|
||||
* recognised.
|
||||
*
|
||||
*
|
||||
* @param eventName event name
|
||||
* @return RecordsManagementEvent event
|
||||
*/
|
||||
RecordsManagementEvent getEvent(String eventName);
|
||||
|
||||
|
||||
/**
|
||||
* Indicates whether a perticular event exists. Returns true if it does, false otherwise.
|
||||
*
|
||||
*
|
||||
* @param eventName event name
|
||||
* @return boolean true if event exists, false otherwise
|
||||
*/
|
||||
boolean existsEvent(String eventName);
|
||||
|
||||
|
||||
/**
|
||||
* Indicates whether a particular event display label exists. Returns true if it does, false otherwise.
|
||||
*
|
||||
* Indicates whether a particular event can be created. Returns true if it is possible, false otherwise.
|
||||
*
|
||||
* @param eventDisplayLabel event display label
|
||||
* @return true if event display label exists, false otherwise
|
||||
* @param eventName event name
|
||||
* @return true if the event can be created, false otherwise
|
||||
*/
|
||||
boolean existsEventDisplayLabel(String eventDisplayLabel);
|
||||
|
||||
boolean canCreateEvent(String eventDisplayLabel, String eventName);
|
||||
|
||||
/**
|
||||
* Indicates whether a particular event can be edited. Returns true if it is possible, false otherwise.
|
||||
*
|
||||
* @param eventDisplayLabel event display label
|
||||
* @param eventName event name
|
||||
* @return true if the event can be edited, false otherwise
|
||||
*/
|
||||
boolean canEditEvent(String eventDisplayLabel, String eventName);
|
||||
|
||||
/**
|
||||
* Add an event
|
||||
*
|
||||
*
|
||||
* @param eventType event type
|
||||
* @param eventName event name
|
||||
* @param eventDisplayLabel event display label
|
||||
*/
|
||||
RecordsManagementEvent addEvent(String eventType, String eventName, String eventDisplayLabel);
|
||||
|
||||
|
||||
/**
|
||||
* Remove an event
|
||||
*
|
||||
*
|
||||
* @param eventName event name
|
||||
*/
|
||||
void removeEvent(String eventName);
|
||||
void removeEvent(String eventName);
|
||||
|
||||
}
|
||||
|
@@ -33,12 +33,13 @@ import org.alfresco.service.cmr.repository.ContentWriter;
|
||||
import org.alfresco.service.cmr.repository.NodeRef;
|
||||
import org.alfresco.service.cmr.repository.NodeService;
|
||||
import org.alfresco.service.cmr.repository.StoreRef;
|
||||
import org.alfresco.util.ParameterCheck;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONObject;
|
||||
|
||||
/**
|
||||
* Records management event service implementation
|
||||
*
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
public class RecordsManagementEventServiceImpl implements RecordsManagementEventService
|
||||
@@ -46,32 +47,32 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
/** Reference to the rm event config node */
|
||||
private static final StoreRef SPACES_STORE = new StoreRef(StoreRef.PROTOCOL_WORKSPACE, "SpacesStore");
|
||||
private static final NodeRef CONFIG_NODE_REF = new NodeRef(SPACES_STORE, "rm_event_config");
|
||||
|
||||
|
||||
/** Node service */
|
||||
private NodeService nodeService;
|
||||
|
||||
|
||||
/** Content service */
|
||||
private ContentService contentService;
|
||||
|
||||
|
||||
/** Registered event types */
|
||||
private Map<String, RecordsManagementEventType> eventTypes = new HashMap<String, RecordsManagementEventType>(7);
|
||||
|
||||
|
||||
/** Available events */
|
||||
private Map<String, RecordsManagementEvent> events;
|
||||
|
||||
|
||||
/**
|
||||
* Set the node service
|
||||
*
|
||||
*
|
||||
* @param nodeService node service
|
||||
*/
|
||||
public void setNodeService(NodeService nodeService)
|
||||
{
|
||||
this.nodeService = nodeService;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Set the content service
|
||||
*
|
||||
*
|
||||
* @param contentService content service
|
||||
*/
|
||||
public void setContentService(ContentService contentService)
|
||||
@@ -94,7 +95,7 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
{
|
||||
return new ArrayList<RecordsManagementEventType>(this.eventTypes.values());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#getEvents()
|
||||
*/
|
||||
@@ -102,11 +103,11 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
{
|
||||
return new ArrayList<RecordsManagementEvent>(this.getEventMap().values());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#getEvent(java.lang.String)
|
||||
*/
|
||||
public RecordsManagementEvent getEvent(String eventName)
|
||||
public RecordsManagementEvent getEvent(String eventName)
|
||||
{
|
||||
if (getEventMap().containsKey(eventName) == false)
|
||||
{
|
||||
@@ -114,7 +115,7 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
}
|
||||
return getEventMap().get(eventName);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#existsEvent(java.lang.String)
|
||||
*/
|
||||
@@ -122,24 +123,76 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
{
|
||||
return getEventMap().containsKey(eventName);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#existsEventDisplayLabel(java.lang.String)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean existsEventDisplayLabel(String eventDisplayLabel)
|
||||
{
|
||||
for (Iterator iterator = getEventMap().values().iterator(); iterator.hasNext();)
|
||||
{
|
||||
RecordsManagementEvent recordsManagementEvent = (RecordsManagementEvent) iterator.next();
|
||||
if (recordsManagementEvent.getDisplayLabel().equalsIgnoreCase(eventDisplayLabel))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#canCreateEvent(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean canCreateEvent(String eventDisplayLabel, String eventName)
|
||||
{
|
||||
ParameterCheck.mandatoryString("eventDisplayLabel", eventDisplayLabel);
|
||||
ParameterCheck.mandatoryString("eventName", eventName);
|
||||
|
||||
boolean canCreateEvent = true;
|
||||
|
||||
if (existsEvent(eventName) == true)
|
||||
{
|
||||
canCreateEvent = false;
|
||||
}
|
||||
|
||||
if (canCreateEvent == true)
|
||||
{
|
||||
for (Iterator iterator = getEventMap().values().iterator(); iterator.hasNext();)
|
||||
{
|
||||
RecordsManagementEvent recordsManagementEvent = (RecordsManagementEvent) iterator.next();
|
||||
if (recordsManagementEvent.getDisplayLabel().equalsIgnoreCase(eventDisplayLabel))
|
||||
{
|
||||
canCreateEvent = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return canCreateEvent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#canEditEvent(java.lang.String, java.lang.String)
|
||||
*/
|
||||
@SuppressWarnings("rawtypes")
|
||||
public boolean canEditEvent(String eventDisplayLabel, String eventName)
|
||||
{
|
||||
ParameterCheck.mandatoryString("eventDisplayLabel", eventDisplayLabel);
|
||||
ParameterCheck.mandatoryString("eventName", eventName);
|
||||
|
||||
boolean canEditEvent = true;
|
||||
|
||||
if (existsEvent(eventName) == false)
|
||||
{
|
||||
throw new AlfrescoRuntimeException("The event '" + eventName + "' does not exist.");
|
||||
}
|
||||
|
||||
for (Iterator iterator = getEventMap().values().iterator(); iterator.hasNext();)
|
||||
{
|
||||
RecordsManagementEvent recordsManagementEvent = (RecordsManagementEvent) iterator.next();
|
||||
if (recordsManagementEvent.getDisplayLabel().equalsIgnoreCase(eventDisplayLabel))
|
||||
{
|
||||
if (recordsManagementEvent.getName().equalsIgnoreCase(eventName))
|
||||
{
|
||||
canEditEvent = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Cannot edit event. An event with the display label '"
|
||||
+ eventDisplayLabel + "' already exist.");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return canEditEvent;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService#addEvent(java.lang.String, java.lang.String, java.lang.String)
|
||||
*/
|
||||
@@ -149,19 +202,19 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
if (eventTypes.containsKey(eventType) == false)
|
||||
{
|
||||
throw new AlfrescoRuntimeException(
|
||||
"Can not add event because event " +
|
||||
eventName +
|
||||
" has an undefined eventType. ("
|
||||
"Can not add event because event " +
|
||||
eventName +
|
||||
" has an undefined eventType. ("
|
||||
+ eventType + ")");
|
||||
}
|
||||
|
||||
|
||||
// Create event and add to map
|
||||
RecordsManagementEvent event = new RecordsManagementEvent(eventType, eventName, eventDisplayLabel);
|
||||
getEventMap().put(event.getName(), event);
|
||||
|
||||
|
||||
// Persist the changes to the event list
|
||||
saveEvents();
|
||||
|
||||
|
||||
return new RecordsManagementEvent(eventType, eventName, eventDisplayLabel);
|
||||
}
|
||||
|
||||
@@ -172,14 +225,14 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
{
|
||||
// Remove the event from the map
|
||||
getEventMap().remove(eventName);
|
||||
|
||||
|
||||
// Persist the changes to the event list
|
||||
saveEvents();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method to get the event map. Loads initial instance from persisted configuration file.
|
||||
*
|
||||
*
|
||||
* @return Map<String, RecordsManagementEvent> map of available events by event name
|
||||
*/
|
||||
private Map<String, RecordsManagementEvent> getEventMap()
|
||||
@@ -190,7 +243,7 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
}
|
||||
return this.events;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Load the events from the persistant storage
|
||||
*/
|
||||
@@ -205,46 +258,46 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Unable to find records management event configuration node.");
|
||||
}
|
||||
|
||||
|
||||
// Read content from config node
|
||||
ContentReader reader = contentService.getReader(CONFIG_NODE_REF, ContentModel.PROP_CONTENT);
|
||||
String jsonString = reader.getContentString();
|
||||
|
||||
|
||||
JSONObject configJSON = new JSONObject(jsonString);
|
||||
JSONArray eventsJSON = configJSON.getJSONArray("events");
|
||||
|
||||
|
||||
events = new HashMap<String, RecordsManagementEvent>(eventsJSON.length());
|
||||
|
||||
|
||||
for (int i = 0; i < eventsJSON.length(); i++)
|
||||
{
|
||||
// Get the JSON object that represents the event
|
||||
JSONObject eventJSON = eventsJSON.getJSONObject(i);
|
||||
|
||||
|
||||
// Get the details of the event
|
||||
String eventType = eventJSON.getString("eventType");
|
||||
String eventName = eventJSON.getString("eventName");
|
||||
String eventDisplayLabel = eventJSON.getString("eventDisplayLabel");
|
||||
|
||||
|
||||
// Check that the eventType is valid
|
||||
if (eventTypes.containsKey(eventType) == false)
|
||||
{
|
||||
throw new AlfrescoRuntimeException(
|
||||
"Can not load rm event configuration because event " +
|
||||
eventName +
|
||||
" has an undefined eventType. ("
|
||||
"Can not load rm event configuration because event " +
|
||||
eventName +
|
||||
" has an undefined eventType. ("
|
||||
+ eventType + ")");
|
||||
}
|
||||
|
||||
|
||||
// Create event and add to map
|
||||
RecordsManagementEvent event = new RecordsManagementEvent(eventType, eventName, eventDisplayLabel);
|
||||
events.put(event.getName(), event);
|
||||
events.put(event.getName(), event);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Save the events to the peristant storage
|
||||
*/
|
||||
@@ -259,10 +312,10 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
{
|
||||
throw new AlfrescoRuntimeException("Unable to find records management event configuration node.");
|
||||
}
|
||||
|
||||
JSONObject configJSON = new JSONObject();
|
||||
|
||||
JSONObject configJSON = new JSONObject();
|
||||
JSONArray eventsJSON = new JSONArray();
|
||||
|
||||
|
||||
int index = 0;
|
||||
for (RecordsManagementEvent event : events.values())
|
||||
{
|
||||
@@ -270,19 +323,19 @@ public class RecordsManagementEventServiceImpl implements RecordsManagementEvent
|
||||
eventJSON.put("eventType", event.getType());
|
||||
eventJSON.put("eventName", event.getName());
|
||||
eventJSON.put("eventDisplayLabel", event.getDisplayLabel());
|
||||
|
||||
|
||||
eventsJSON.put(index, eventJSON);
|
||||
index++;
|
||||
}
|
||||
}
|
||||
configJSON.put("events", eventsJSON);
|
||||
|
||||
|
||||
// Get content writer
|
||||
ContentWriter contentWriter = contentService.getWriter(CONFIG_NODE_REF, ContentModel.PROP_CONTENT, true);
|
||||
contentWriter.putContent(configJSON.toString());
|
||||
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}, AuthenticationUtil.getSystemUserName());
|
||||
}
|
||||
|
||||
|
@@ -0,0 +1,67 @@
|
||||
/*
|
||||
* Copyright (C) 2005-2013 Alfresco Software Limited.
|
||||
*
|
||||
* This file is part of Alfresco
|
||||
*
|
||||
* Alfresco is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Alfresco 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 Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
package org.alfresco.module.org_alfresco_module_rm.script.admin;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptException;
|
||||
|
||||
/**
|
||||
* Base class for Records management event web scripts
|
||||
*
|
||||
* @author Tuna Aksoy
|
||||
* @since 2.1
|
||||
*/
|
||||
public class RMEventBase extends DeclarativeWebScript
|
||||
{
|
||||
/**
|
||||
* Helper method for getting the value for a key from a JSON object
|
||||
*
|
||||
* @param json The request content as JSON object
|
||||
* @param key The key for which the value should be retrieved (e.g. "eventName")
|
||||
* @return String The value for the provided key if the key exists, null otherwise
|
||||
* @throws JSONException If there is no string value for the key
|
||||
*/
|
||||
protected String getValue(JSONObject json, String key) throws JSONException
|
||||
{
|
||||
String result = null;
|
||||
if (json.has(key) == true)
|
||||
{
|
||||
result = json.getString(key);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for checking the key (e.g. "eventName")
|
||||
*
|
||||
* @param key String The key which will be checked
|
||||
* @param msg String The error message to throw if the key doesn't have a value
|
||||
*/
|
||||
protected void doCheck(String key, String msg)
|
||||
{
|
||||
if (StringUtils.isBlank(key))
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, msg);
|
||||
}
|
||||
}
|
||||
}
|
@@ -22,35 +22,31 @@ import java.io.IOException;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.alfresco.error.AlfrescoRuntimeException;
|
||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent;
|
||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService;
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptException;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.alfresco.util.ParameterCheck;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONTokener;
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptException;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
|
||||
/**
|
||||
* Records management event PUT web script
|
||||
*
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
public class RmEventPut extends DeclarativeWebScript
|
||||
public class RmEventPut extends RMEventBase
|
||||
{
|
||||
@SuppressWarnings("unused")
|
||||
private static Log logger = LogFactory.getLog(RmEventPut.class);
|
||||
|
||||
/** Reccords management event service */
|
||||
/** Records management event service */
|
||||
private RecordsManagementEventService rmEventService;
|
||||
|
||||
|
||||
/**
|
||||
* Set the records management event service
|
||||
*
|
||||
*
|
||||
* @param rmEventService
|
||||
*/
|
||||
public void setRecordsManagementEventService(RecordsManagementEventService rmEventService)
|
||||
@@ -58,59 +54,49 @@ public class RmEventPut extends DeclarativeWebScript
|
||||
this.rmEventService = rmEventService;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest,
|
||||
* org.springframework.extensions.webscripts.Status,
|
||||
* org.springframework.extensions.webscripts.Cache)
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
ParameterCheck.mandatory("req", req);
|
||||
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
JSONObject json = null;
|
||||
try
|
||||
{
|
||||
// Event name
|
||||
Map<String, String> templateVars = req.getServiceMatch().getTemplateVars();
|
||||
String eventName = templateVars.get("eventname");
|
||||
if (eventName == null)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_NOT_FOUND, "No event name was provided on the URL.");
|
||||
}
|
||||
|
||||
// Check the event exists
|
||||
if (rmEventService.existsEvent(eventName) == false)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_NOT_FOUND, "The event " + eventName + " does not exist.");
|
||||
}
|
||||
|
||||
// Convert the request content to JSON
|
||||
json = new JSONObject(new JSONTokener(req.getContent().getContent()));
|
||||
|
||||
String eventDisplayLabel = null;
|
||||
if (json.has("eventDisplayLabel") == true)
|
||||
|
||||
// Check the event name
|
||||
String eventName = getValue(json, "eventName");
|
||||
doCheck(eventName, "No event name was provided.");
|
||||
|
||||
// Check the event display label
|
||||
String eventDisplayLabel = getValue(json, "eventDisplayLabel");
|
||||
doCheck(eventDisplayLabel, "No event display label was provided.");
|
||||
|
||||
// Check if the event can be edited or not
|
||||
RecordsManagementEvent event = null;
|
||||
if (canEditEvent(eventDisplayLabel, eventName) == true)
|
||||
{
|
||||
eventDisplayLabel = json.getString("eventDisplayLabel");
|
||||
// Check the event type
|
||||
String eventType = getValue(json, "eventType");
|
||||
doCheck(eventType, "No event type was provided.");
|
||||
|
||||
// Create event
|
||||
event = rmEventService.addEvent(eventType, eventName, eventDisplayLabel);
|
||||
}
|
||||
if (eventDisplayLabel == null || eventDisplayLabel.length() == 0)
|
||||
else
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "No event display label provided.");
|
||||
// Get event
|
||||
event = rmEventService.getEvent(eventName);
|
||||
}
|
||||
if (rmEventService.existsEventDisplayLabel(eventDisplayLabel))
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
|
||||
"Cannot edit event. The event display label '"
|
||||
+ eventDisplayLabel + "' already exists.");
|
||||
}
|
||||
|
||||
String eventType = null;
|
||||
if (json.has("eventType") == true)
|
||||
{
|
||||
eventType = json.getString("eventType");
|
||||
}
|
||||
if (eventType == null || eventType.length() == 0)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "No event type provided.");
|
||||
}
|
||||
|
||||
|
||||
RecordsManagementEvent event = rmEventService.addEvent(eventType, eventName, eventDisplayLabel);
|
||||
|
||||
model.put("event", event);
|
||||
|
||||
}
|
||||
catch (IOException iox)
|
||||
{
|
||||
@@ -122,7 +108,31 @@ public class RmEventPut extends DeclarativeWebScript
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
|
||||
"Could not parse JSON from req.", je);
|
||||
}
|
||||
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for checking if an event can be edited or not. Throws an
|
||||
* error if an event with the same display label already exists.
|
||||
*
|
||||
* @param eventDisplayLabel The display label of the event
|
||||
* @param eventName The name of the event
|
||||
* @return true if the event can be edited, false otherwise
|
||||
*/
|
||||
private boolean canEditEvent(String eventDisplayLabel, String eventName)
|
||||
{
|
||||
boolean canEditEvent;
|
||||
|
||||
try
|
||||
{
|
||||
canEditEvent = rmEventService.canEditEvent(eventDisplayLabel, eventName);
|
||||
}
|
||||
catch (AlfrescoRuntimeException are)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, are.getLocalizedMessage());
|
||||
}
|
||||
|
||||
return canEditEvent;
|
||||
}
|
||||
}
|
@@ -25,33 +25,29 @@ import java.util.Map;
|
||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEvent;
|
||||
import org.alfresco.module.org_alfresco_module_rm.event.RecordsManagementEventService;
|
||||
import org.alfresco.util.GUID;
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.DeclarativeWebScript;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptException;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.alfresco.util.ParameterCheck;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONTokener;
|
||||
import org.springframework.extensions.webscripts.Cache;
|
||||
import org.springframework.extensions.webscripts.Status;
|
||||
import org.springframework.extensions.webscripts.WebScriptException;
|
||||
import org.springframework.extensions.webscripts.WebScriptRequest;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Records management event POST web script
|
||||
*
|
||||
* @author Roy Wetherall
|
||||
*/
|
||||
public class RmEventsPost extends DeclarativeWebScript
|
||||
public class RmEventsPost extends RMEventBase
|
||||
{
|
||||
@SuppressWarnings("unused")
|
||||
private static Log logger = LogFactory.getLog(RmEventsPost.class);
|
||||
|
||||
/** Reccords management event service */
|
||||
/** Records management event service */
|
||||
private RecordsManagementEventService rmEventService;
|
||||
|
||||
|
||||
/**
|
||||
* Set the records management event service
|
||||
*
|
||||
*
|
||||
* @param rmEventService
|
||||
*/
|
||||
public void setRecordsManagementEventService(RecordsManagementEventService rmEventService)
|
||||
@@ -59,57 +55,41 @@ public class RmEventsPost extends DeclarativeWebScript
|
||||
this.rmEventService = rmEventService;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.springframework.extensions.webscripts.DeclarativeWebScript#executeImpl(org.springframework.extensions.webscripts.WebScriptRequest,
|
||||
* org.springframework.extensions.webscripts.Status,
|
||||
* org.springframework.extensions.webscripts.Cache)
|
||||
*/
|
||||
@Override
|
||||
public Map<String, Object> executeImpl(WebScriptRequest req, Status status, Cache cache)
|
||||
{
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
ParameterCheck.mandatory("req", req);
|
||||
|
||||
Map<String, Object> model = new HashMap<String, Object>();
|
||||
JSONObject json = null;
|
||||
try
|
||||
{
|
||||
// Convert the request content to JSON
|
||||
json = new JSONObject(new JSONTokener(req.getContent().getContent()));
|
||||
|
||||
String eventName = null;
|
||||
if (json.has("eventName") == true)
|
||||
{
|
||||
eventName = json.getString("eventName");
|
||||
}
|
||||
|
||||
if (eventName == null || eventName.length() == 0)
|
||||
{
|
||||
// Generate the event name
|
||||
eventName = GUID.generate();
|
||||
}
|
||||
|
||||
String eventDisplayLabel = null;
|
||||
if (json.has("eventDisplayLabel") == true)
|
||||
{
|
||||
eventDisplayLabel = json.getString("eventDisplayLabel");
|
||||
}
|
||||
if (eventDisplayLabel == null || eventDisplayLabel.length() == 0)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "No event display label provided.");
|
||||
}
|
||||
if (rmEventService.existsEventDisplayLabel(eventDisplayLabel))
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
|
||||
"Cannot create event. The event display label '"
|
||||
+ eventDisplayLabel + "' already exists.");
|
||||
}
|
||||
|
||||
String eventType = null;
|
||||
if (json.has("eventType") == true)
|
||||
{
|
||||
eventType = json.getString("eventType");
|
||||
}
|
||||
if (eventType == null || eventType.length() == 0)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST, "No event type provided.");
|
||||
}
|
||||
|
||||
|
||||
// Get the event name
|
||||
String eventName = getEventName(json);
|
||||
|
||||
// Check the event display label
|
||||
String eventDisplayLabel = getValue(json, "eventDisplayLabel");
|
||||
doCheck(eventDisplayLabel, "No event display label was provided.");
|
||||
|
||||
// Check if the event can be created
|
||||
canCreateEvent(eventDisplayLabel, eventName);
|
||||
|
||||
// Check the event type
|
||||
String eventType = getValue(json, "eventType");
|
||||
doCheck(eventType, "No event type was provided.");
|
||||
|
||||
// Create event
|
||||
RecordsManagementEvent event = rmEventService.addEvent(eventType, eventName, eventDisplayLabel);
|
||||
|
||||
model.put("event", event);
|
||||
|
||||
}
|
||||
catch (IOException iox)
|
||||
{
|
||||
@@ -121,7 +101,48 @@ public class RmEventsPost extends DeclarativeWebScript
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
|
||||
"Could not parse JSON from req.", je);
|
||||
}
|
||||
|
||||
|
||||
return model;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for getting the event name
|
||||
*
|
||||
* @param json The request content as JSON object
|
||||
* @return String The event name. A generated GUID if it doesn't exist
|
||||
* @throws JSONException If there is no string value for the key
|
||||
*/
|
||||
private String getEventName(JSONObject json) throws JSONException
|
||||
{
|
||||
String eventName = getValue(json, "eventName");
|
||||
|
||||
if (StringUtils.isBlank(eventName))
|
||||
{
|
||||
// Generate the event name
|
||||
eventName = GUID.generate();
|
||||
}
|
||||
|
||||
return eventName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper method for checking if an event can be created or not. Throws an
|
||||
* error if the event already exists.
|
||||
*
|
||||
* @param eventDisplayLabel The display label of the event
|
||||
* @param eventName The name of the event
|
||||
*/
|
||||
private boolean canCreateEvent(String eventDisplayLabel, String eventName)
|
||||
{
|
||||
boolean canCreateEvent = true;
|
||||
|
||||
if (rmEventService.canCreateEvent(eventDisplayLabel, eventName) == false)
|
||||
{
|
||||
throw new WebScriptException(Status.STATUS_BAD_REQUEST,
|
||||
"Cannot create event. An event with the display label '"
|
||||
+ eventDisplayLabel + "' already exists.");
|
||||
}
|
||||
|
||||
return canCreateEvent;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user