public ModelClass getLocationTracker( Version version ) { List<ModelClass> modelClasses = getClasses( version ); ModelClass locationTracker = null; for ( ModelClass modelClass : modelClasses ) { ModelClassMetadata metadata = (ModelClassMetadata) modelClass.getMetadata( ModelClassMetadata.ID ); if ( metadata != null && StringUtils.isNotEmpty( metadata.getLocationTracker() ) ) { if ( locationTracker == null ) { locationTracker = modelClass; } else { throw new ModelloRuntimeException( "There are multiple location tracker classes (" + locationTracker.getName() + " vs. " + modelClass.getName() + ") for this version " + version + "." ); } } } return locationTracker; }
String superClass = modelClass.getSuperClass(); if ( superClass != null ) modelClass = modelClass.getModel().getClass( superClass, version, true ); for ( ModelField field : modelClass.getFields( version ) ) throw new ModelloRuntimeException( "parent field not found: class " + modelClass.getName() + " xml.insertParentFieldUpTo='" + xmlFieldMetadata.getInsertParentFieldsUpTo() + "'" );
private static String getSourceClassName( ModelClass modelClass, Version generatedVersion ) { return modelClass.getPackageName( true, generatedVersion ) + "." + modelClass.getName(); } }
public void addInterface( String modelInterface ) { if ( getInterfaces().contains( modelInterface ) ) { throw new ModelloRuntimeException( "Duplicate interface in " + getName() + ": " + modelInterface + "." ); } getInterfaces().add( modelInterface ); }
/** * Returns all the fields in this class and all super classes if withInheritedField equals to true. * * @return Returns all the fields in this class and all super classes. */ public List<ModelField> getAllFields( boolean withInheritedField ) { if ( ! withInheritedField ) { return getAllFields(); } List<ModelField> fields = new ArrayList<ModelField>( getAllFields() ); ModelClass c = this; while ( c.hasSuperClass() && c.isInternalSuperClass() ) { ModelClass parent = getModel().getClass( c.getSuperClass(), getVersionRange() ); fields.addAll( parent.getAllFields() ); c = parent; } return fields; }
JPoxClassMetadata classMetadata = (JPoxClassMetadata) modelClass.getMetadata( JPoxClassMetadata.ID ); JPoxModelMetadata modelMetadata = (JPoxModelMetadata) modelClass.getModel().getMetadata( JPoxModelMetadata.ID ); emsg.append( " <name>" ).append( modelClass.getName() ).append( "</name>" ).append( EOL ); emsg.append( " <fields>" ).append( EOL ); emsg.append( " <field" ); emsg.append( " 4) Use a different field name in" ).append( EOL ); emsg.append( " <class>" ).append( EOL ); emsg.append( " <name>" ).append( modelClass.getName() ).append( "</name>" ).append( EOL ); emsg.append( " <fields>" ).append( EOL ); emsg.append( " <field>" ).append( EOL );
JPoxModelMetadata modelMetadata = (JPoxModelMetadata) modelClass.getModel().getMetadata( JPoxModelMetadata.ID ); tableName = prefix + modelClass.getName(); emsg.append( " <name>" ).append( modelClass.getName() ).append( "</name>" ).append( EOL ); emsg.append( " </class>" ).append( EOL ); emsg.append( " </model>" ).append( EOL );
private void writeClass( XMLWriter writer, ModelClass modelClass ) throws ModelloException JPoxClassMetadata jpoxMetadata = (JPoxClassMetadata) modelClass.getMetadata( JPoxClassMetadata.ID ); writer.addAttribute( "name", modelClass.getName() ); if ( modelClass.hasSuperClass() && modelClass.isInternalSuperClass() ) persistenceCapableSuperclass = getModel().getClass( modelClass.getSuperClass(), getGeneratedVersion() ); persistenceCapableSuperclass.getPackageName( isPackageWithVersion(), getGeneratedVersion() ); + persistenceCapableSuperclass.getName() ); List fields = Collections.unmodifiableList( modelClass.getFields( getGeneratedVersion() ) ); writeFetchGroup( writer, modelClass.getName() + "_detail", detailedFields, true );
public Map<String, String> getAttributesForClass( ModelClass modelClass ) { return classAttributes.get( modelClass.getName() ); }
JavaClassMetadata javaClassMetadata = (JavaClassMetadata) modelClass.getMetadata( JavaClassMetadata.ID ); if ( toVersion != null && !toVersion.inside( modelClass.getVersionRange() ) ) String methodName = "convert" + modelClass.getName(); String parameterName = uncapitalise( modelClass.getName() ); String sourceClass = getSourceClassName( modelClass, fromVersion ); String targetClass = modelClass.getPackageName( toVersion != null, toVersion ) + "." + modelClass.getName(); sc.add( "}" ); if ( modelClass.getSuperClass() != null ) sc.add( "value = (" + targetClass + ") convert" + modelClass.getSuperClass() + "( " + parameterName + ", value );" ); for ( ModelField modelField : modelClass.getFields( fromVersion ) ) try newField = modelClass.getField( modelField.getName(), toVersion ); if ( isClassInModel( assoc.getTo(), modelClass.getModel() ) ) if ( isClassInModel( assoc.getTo(), modelClass.getModel() ) )
JavaClassMetadata javaClassMetadata = (JavaClassMetadata) modelClass.getMetadata( JavaClassMetadata.ID ); String packageName = modelClass.getPackageName( isPackageWithVersion(), getGeneratedVersion() ); JSourceWriter sourceWriter = newJSourceWriter( packageName, modelClass.getName() ); JClass jClass = new JClass( packageName + '.' + modelClass.getName() ); if ( StringUtils.isNotEmpty( modelClass.getDescription() ) ) jClass.getJDocComment().setComment( appendPeriod( modelClass.getDescription() ) ); if ( modelClass.getSuperClass() != null ) jClass.setSuperClass( modelClass.getSuperClass() ); superClassInModel = isClassInModel( modelClass.getSuperClass(), objectModel ); for ( String implementedInterface : modelClass.getInterfaces() ) if ( useJava5 && !modelClass.getAnnotations().isEmpty() ) for ( String annotation : modelClass.getAnnotations() ) for ( ModelField modelField : modelClass.getFields( getGeneratedVersion() ) ) List<ModelField> identifierFields = modelClass.getIdentifierFields( getGeneratedVersion() ); if ( modelClass.getCodeSegments( getGeneratedVersion() ) != null )
public void validateElement() throws ModelValidationException { // Check if superClass exists if ( hasSuperClass() ) { try { getModel().getClass( superClass, getVersionRange() ); isInternalSuperClass = true; } catch ( ModelloRuntimeException e ) { isInternalSuperClass = false; } } if ( getModel().getDefault( ModelDefault.CHECK_DEPRECATION ).getBoolean() ) { if ( ! Version.INFINITE.equals( getVersionRange().getToVersion() ) && getDeprecatedVersion() == null ) { throw new ModelValidationException( "You must define the deprecated version of '" + getName() + "' class." ); } } }
private void writeClass( ModelClass modelClass, JClass jClass ) throws ModelloException String className = modelClass.getName(); sc.indent(); ModelClassMetadata classMetadata = (ModelClassMetadata) modelClass.getMetadata( ModelClassMetadata.ID ); XmlModelMetadata xmlModelMetadata = (XmlModelMetadata) modelClass.getModel().getMetadata( XmlModelMetadata.ID ); if ( modelClass.getIdentifierFields( getGeneratedVersion() ).size() != 1 ) sc.indent(); if ( isClassInModel( association.getTo(), modelClass.getModel() ) )
if ( useJava5 ) returnType = new JClass( modelClass.getName() ); sc.indent(); sc.add( modelClass.getName() + " copy = (" + modelClass.getName() + ") super.clone();" ); for ( ModelField modelField : modelClass.getFields( getGeneratedVersion() ) ) ( (ModelClassMetadata) locationClass.getMetadata( ModelClassMetadata.ID ) ).getLocationTracker(); sc.add( "if ( copy." + locationField + " != null )" ); sc.add( "{" );
String targetNamespace = XsdModelHelper.getTargetNamespace( modelClass.getModel(), getGeneratedVersion() ); XmlModelMetadata xmlModelMetadata = (XmlModelMetadata) modelClass.getModel().getMetadata( XmlModelMetadata.ID ); String id = tagName + '/' + modelClass.getPackageName() + '.' + modelClass.getName(); if ( stack.contains( id ) )
( (ModelClassMetadata) locationClass.getMetadata( ModelClassMetadata.ID ) ).getLocationTracker(); String interfaceName = locationClass.getName() + "Tracker"; String packageName = locationClass.getPackageName( isPackageWithVersion(), getGeneratedVersion() ); JMethodSignature jMethod = new JMethodSignature( "get" + propertyName, new JType( locationClass.getName() ) ); jMethod.setComment( "Gets the location of the specified field in the input source." ); addParameter( jMethod, "Object", "field", "The key of the field, must not be <code>null</code>." ); jMethod.setComment( "Sets the location of the specified field." ); addParameter( jMethod, "Object", "field", "The key of the field, must not be <code>null</code>." ); addParameter( jMethod, locationClass.getName(), singular( locationField ), "The location of the field, may be <code>null</code>." ); jInterface.addMethod( jMethod );
protected ModelField getReferenceIdentifierField( ModelAssociation association ) throws ModelloException { XmlAssociationMetadata xmlAssocMetadata = (XmlAssociationMetadata) association.getAssociationMetadata( XmlAssociationMetadata.ID ); ModelField referenceIdentifierField = null; if ( xmlAssocMetadata.isReference() ) { String associationName = association.getName(); ModelClass modelClass = association.getModelClass(); if ( !isClassInModel( association.getTo(), modelClass.getModel() ) ) { throw new ModelloException( "Can't use xml.reference on the '" + associationName + "' association of '" + modelClass.getName() + "' because the target class '" + association.getTo() + "' is not in the model" ); } List<ModelField> identifierFields = association.getToClass().getIdentifierFields( getGeneratedVersion() ); if ( identifierFields.size() == 1 ) { referenceIdentifierField = identifierFields.get( 0 ); } else { referenceIdentifierField = new DummyIdModelField(); referenceIdentifierField.setName( "modello.refid" ); } } return referenceIdentifierField; }
String superClass = modelClass.getSuperClass(); if ( StringUtils.isNotEmpty( superClass ) && isClassInModel( superClass, getModel() ) ) ModelClassMetadata metadata = (ModelClassMetadata) locationClass.getMetadata( ModelClassMetadata.ID ); String locationField = metadata.getLocationTracker(); String fieldType = "java.util.Map" + ( useJava5 ? "<Object, " + locationClass.getName() + ">" : "" ); String fieldImpl = "java.util.LinkedHashMap" + ( useJava5 ? "<Object, " + locationClass.getName() + ">" : "" ); new JMethod( "get" + capitalise( singular( locationField ) ), new JType( locationClass.getName() ), null ); jMethod.addParameter( new JParameter( new JType( "Object" ), "key" ) ); sc = jMethod.getSourceCode(); jMethod.addParameter( new JParameter( new JType( locationClass.getName() ), singular( locationField ) ) ); sc = jMethod.getSourceCode(); sc.add( "if ( " + singular( locationField ) + " != null )" );
public ClassMetadata getMetadata( String key ) { return getMetadata( ClassMetadata.class, key ); }
protected static Context makeStubVelocityContext( Model model, Version version, String packageName ) { List classes = model.getClasses( version ); Map classFields = new HashMap(); for ( Iterator it = classes.iterator(); it.hasNext(); ) { ModelClass modelClass = (ModelClass) it.next(); List fields = modelClass.getFields( version ); classFields.put( modelClass.getName(), fields ); } Context context = new VelocityContext(); context.put( "version", version ); context.put( "model", model ); context.put( "classes", classes ); context.put( "classFields", classFields ); context.put( "javaTool", new JavaTool() ); context.put( "package", packageName ); return context; }