/**
* Licensed to Apereo under one or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information regarding copyright ownership. Apereo
* licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use
* this file except in compliance with the License. You may obtain a copy of the License at the
* following location:
*
* <p>http://www.apache.org/licenses/LICENSE-2.0
*
* <p>Unless required by applicable law or agreed to in writing, software distributed under the
* License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apereo.portal.portlets.groupselector;
import org.apereo.portal.portlet.om.IPortletDefinition;
import org.apereo.portal.security.IPerson;
/**
* EntityEnum represents an enumeration of known uPortal entity types. This class was designed
* specifically for use with the JsonEntityBean entity wrapper and for simplified channel and group
* browsing.
*
*/
public enum EntityEnum {
PORTLET(IPortletDefinition.class, "portlet", false), // uPortal portlet
CATEGORY(IPortletDefinition.class, "category", true), // uPortal portlet category
PERSON(IPerson.class, "person", false), // uPortal person
GROUP(IPerson.class, "group", true); // uPortal person group
private Class<?> clazz;
private String stringValue;
private boolean isGroup;
private EntityEnum(Class<?> clazz, String stringValue, boolean isGroup) {
this.clazz = clazz;
this.stringValue = stringValue;
this.isGroup = isGroup;
}
/**
* Get an EntityEnum for a String type representation.
*
* @param type
* @return
*/
public static EntityEnum getEntityEnum(String type) {
if (PORTLET.toString().equalsIgnoreCase(type)) {
return PORTLET;
} else if (CATEGORY.toString().equalsIgnoreCase(type)) {
return CATEGORY;
} else if (PERSON.toString().equalsIgnoreCase(type)) {
return PERSON;
} else if (GROUP.toString().equalsIgnoreCase(type)) {
return GROUP;
}
return null;
}
public static EntityEnum getEntityEnum(Class<?> entityTypeClazz, boolean isGroup) {
EntityEnum rslt = null;
for (EntityEnum val : EntityEnum.values()) {
if (val.getClazz().equals(entityTypeClazz) && val.isGroup() == isGroup) {
rslt = val;
break;
}
}
return rslt;
}
/**
* Get the Class associated with this entity type.
*
* @return
*/
public Class<?> getClazz() {
return this.clazz;
}
/**
* Determine if this entity type is a group type. It should be noted that method returns the
* general "group"-iness of the entity, not whether this entity is specifically a person group.
*
* @return
*/
public boolean isGroup() {
return this.isGroup;
}
@Override
public String toString() {
return this.stringValue;
}
}