/* * Copyright 2012 PRODYNA AG * * Licensed under the Eclipse Public License (EPL), Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.opensource.org/licenses/eclipse-1.0.php or * http://www.nabucco.org/License.html * * 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.nabucco.framework.generator.compiler.transformation.common.annotation.service; import org.nabucco.framework.generator.compiler.transformation.common.annotation.NabuccoAnnotation; import org.nabucco.framework.generator.compiler.transformation.common.annotation.NabuccoAnnotationMapper; import org.nabucco.framework.generator.compiler.transformation.common.annotation.NabuccoAnnotationType; import org.nabucco.framework.generator.parser.syntaxtree.AnnotationDeclaration; import org.nabucco.framework.generator.parser.syntaxtree.ServiceStatement; /** * NabuccoServiceType * * @author Nicolas Moser, PRODYNA AG */ public enum NabuccoServiceType { BUSINESS("business"), PERSISTENCE("persistence"), RESOURCE("resource"); /** * Creates a new {@link NabuccoServiceType} instance. * * @param value * the enum value */ private NabuccoServiceType(String value) { this.value = value; } private String value; /** * Getter for the value. * * @return Returns the value. */ public String getValue() { return this.value; } /** * Resolves the service type of a service declaration. * * @param service * the service to check * * @return the defined service type */ public static NabuccoServiceType valueOf(ServiceStatement service) { return valueOf(service.annotationDeclaration); } /** * Resolves the service type of service declaration annotations. * * @param serviceAnnotations * the service annotations to check * * @return the defined service type */ public static NabuccoServiceType valueOf(AnnotationDeclaration serviceAnnotations) { NabuccoAnnotation serviceTypeAnnotation = NabuccoAnnotationMapper.getInstance().mapToAnnotation( serviceAnnotations, NabuccoAnnotationType.SERVICE_TYPE); if (serviceTypeAnnotation == null || serviceTypeAnnotation.getValue() == null) { return PERSISTENCE; } String value = serviceTypeAnnotation.getValue(); for (NabuccoServiceType serviceType : NabuccoServiceType.values()) { if (value.equalsIgnoreCase(serviceType.getValue())) { return serviceType; } } return PERSISTENCE; } }