001package org.andromda.cartridges.ejb3.metafacades; 002 003import java.text.MessageFormat; 004import org.andromda.metafacades.uml.UMLProfile; 005import org.apache.commons.lang.ObjectUtils; 006import org.apache.commons.lang.StringUtils; 007 008/** 009 * MetafacadeLogic implementation for org.andromda.cartridges.ejb3.metafacades.EJB3EmbeddedValueFacade. 010 * 011 * @see EJB3EmbeddedValueFacade 012 */ 013public class EJB3EmbeddedValueFacadeLogicImpl 014 extends EJB3EmbeddedValueFacadeLogic 015{ 016 private static final long serialVersionUID = 34L; 017 /** 018 * The property which stores the pattern defining the embedded value 019 * implementation name. 020 */ 021 static final String EMBEDDED_VALUE_IMPLEMENTATION_NAME_PATTERN = "embeddedValueImplementationNamePattern"; 022 023 /** 024 * @param metaObject 025 * @param context 026 */ 027 public EJB3EmbeddedValueFacadeLogicImpl(final Object metaObject, final String context) 028 { 029 super(metaObject, context); 030 } 031 032 /** 033 * @see EJB3EmbeddedValueFacade#isImmutable() 034 */ 035 @Override 036 protected boolean handleIsImmutable() 037 { 038 boolean immutable = false; 039 Object value = this.findTaggedValue(UMLProfile.TAGGEDVALUE_PERSISTENCE_IMMUTABLE); 040 if (value != null) 041 { 042 immutable = Boolean.valueOf(ObjectUtils.toString(value)).booleanValue(); 043 } 044 return immutable; 045 } 046 047 /** 048 * @see EJB3EmbeddedValueFacade#getImplementationName() 049 */ 050 @Override 051 protected String handleGetImplementationName() 052 { 053 return MessageFormat.format( 054 this.getImplementationNamePattern(), 055 StringUtils.trimToEmpty(this.getName())); 056 } 057 058 /** 059 * Gets the value of the {@link #EMBEDDED_VALUE_IMPLEMENTATION_NAME_PATTERN} 060 * 061 * @return the embedded value name pattern. 062 */ 063 private String getImplementationNamePattern() 064 { 065 return String.valueOf(this.getConfiguredProperty(EMBEDDED_VALUE_IMPLEMENTATION_NAME_PATTERN)); 066 } 067 068 /** 069 * @see EJB3EmbeddedValueFacadeLogic#handleGetFullyQualifiedImplementationName() 070 */ 071 @Override 072 protected String handleGetFullyQualifiedImplementationName() 073 { 074 return EJB3MetafacadeUtils.getFullyQualifiedName( 075 this.getPackageName(), 076 this.getImplementationName(), 077 null); 078 } 079}