/**
* OLAT - Online Learning and Training<br>
* http://www.olat.org
* <p>
* Licensed under the Apache License, Version 2.0 (the "License"); <br>
* you may not use this file except in compliance with the License.<br>
* You may obtain a copy of the License at
* <p>
* http://www.apache.org/licenses/LICENSE-2.0
* <p>
* Unless required by applicable law or agreed to in writing,<br>
* software distributed under the License is distributed on an "AS IS" BASIS, <br>
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br>
* See the License for the specific language governing permissions and <br>
* limitations under the License.
* <p>
* Copyright (c) since 2004 at Multimedia- & E-Learning Services (MELS),<br>
* University of Zurich, Switzerland.
* <hr>
* <a href="http://www.openolat.org">
* OpenOLAT - Online Learning and Training</a><br>
* This file has been modified by the OpenOLAT community. Changes are licensed
* under the Apache 2.0 license as the original file.
*/
package org.olat.core.logging.activity;
import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
/**
* enum representing the four CRUD types which are
* stored with each log entry:
* <ul>
* <li>create: when a new resource is created</li>
* <li>retrieve/read: when a resource is read</li>
* <li>update: when a resource is changed/updated</li>
* <li>delete: when a resource is deleted</li>
* </ul>
* Note that it's not always easy to map log messages
* to one of the four crud actions - if you find it hard
* it is always an idea to fall back to the default 'retrieve'
* <p>
* NOTE: Make sure that the initial of any two
* CrudActions are different! The initial is what is
* stored to the DB!
* <p>
* Initial Date: 20.10.2009 <br>
* @author Stefan
*/
public enum CrudAction {
/** a resource is created **/
create,
/** a resource is retrieved/read - this includes open/close **/
retrieve,
/** a resource is updated **/
update,
/** a resource is deleted **/
delete,
/** an exit from viewing/editing/etc a resource **/
exit;
static {
Field[] fields = CrudAction.class.getDeclaredFields();
if (fields!=null) {
Set<String> initials = new HashSet<String>();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
if (field.getType()==CrudAction.class) {
String initial = field.getName().substring(0, 1);
if (initials.contains(initial)) {
throw new IllegalStateException("CrudAction contained at least two actions with the same initial '"+initial+"'. One of which is "+field.getName());
}
initials.add(initial);
}
}
}
}
}