
com.draagon.meta.manager.db.InheritanceRef Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of metaobjects-omdb Show documentation
Show all versions of metaobjects-omdb Show documentation
Relational Database ObjectManager libraries for MetaData-driven development.
The newest version!
package com.draagon.meta.manager.db;
import java.util.Properties;
import com.draagon.meta.MetaClass;
import com.draagon.meta.MetaClassLoader;
import com.draagon.meta.MetaField;
public class InheritanceRef {
public final static String PROP_SUPER_CLASS = "superClass";
public final static String PROP_SUPER_JOINER = "superJoiner";
public final static String PROP_JOINER = "joiner";
public final static String PROP_DISCRIMINATOR = "discriminator";
public final static String PROP_DISCRIMINATOR_VALUE = "discriminatorValue";
private MetaClass superClass = null;
private MetaField superJoinerField = null;
private MetaClass metaClass = null;
private MetaField joinerField = null;
private MetaField discriminatorField = null;
private String discriminatorValue = null;
public InheritanceRef( MetaClass mc, Properties def ) {
String pj = def.getProperty( PROP_JOINER );
if ( pj == null ) throw new IllegalArgumentException( "Inheritance Properties must have a 'joiner' property" );
String psc = def.getProperty( PROP_SUPER_CLASS );
if ( psc == null ) throw new IllegalArgumentException( "Inheritance Properties must have a 'superClass' property" );
String psj = def.getProperty( PROP_SUPER_JOINER );
if ( psj == null ) throw new IllegalArgumentException( "Inheritance Properties must have a 'superJoiner' property" );
String pd = def.getProperty( PROP_DISCRIMINATOR );
metaClass = mc;
if ( !mc.hasMetaField( pj )) throw new IllegalArgumentException( "Inheritance 'joiner' property [" + pj + "] is not a valid MetaField on MetaClass [" + mc.getName() + "]" );
joinerField = mc.getMetaField( pj );
superClass = MetaClass.forName( psc );
if ( superClass == null ) throw new IllegalArgumentException( "Inheritance 'superClass' property [" + psc + "] is not a valid MetaClass" );
if ( !superClass.hasMetaField( psj )) throw new IllegalArgumentException( "Inheritance 'superJoiner' property [" + psj + "] is not a valid MetaField on MetaClass [" + superClass.getName() + "]" );
superJoinerField = superClass.getMetaField( psj );
if ( pd != null ) {
if ( !mc.hasMetaField( pd )) throw new IllegalArgumentException( "Inheritance 'discriminator' property [" + pd + "] is not a valid MetaField on MetaClass [" + mc.getName() + "]" );
discriminatorField = mc.getMetaField( pd );
discriminatorValue = def.getProperty( PROP_DISCRIMINATOR_VALUE );
if ( discriminatorValue == null ) throw new IllegalArgumentException( "Inheritance Properties must have a 'discriminatorValue' property if a 'discriminator' property exists" );
}
}
public MetaClass getSuperClass() {
return superClass;
}
public void setSuperClass(MetaClass superClass) {
this.superClass = superClass;
}
public MetaField getSuperJoinerField() {
return superJoinerField;
}
public void setSuperJoinerField(MetaField superJoinerField) {
this.superJoinerField = superJoinerField;
}
public MetaClass getMetaClass() {
return metaClass;
}
public void setMetaClass(MetaClass metaClass) {
this.metaClass = metaClass;
}
public MetaField getJoinerField() {
return joinerField;
}
public void setJoinerField(MetaField joinerField) {
this.joinerField = joinerField;
}
public MetaField getDiscriminatorField() {
return discriminatorField;
}
public void setDiscriminatorField(MetaField discriminatorField) {
this.discriminatorField = discriminatorField;
}
public String getDiscriminatorValue() {
return discriminatorValue;
}
public void setDiscriminatorValue(String discriminatorValue) {
this.discriminatorValue = discriminatorValue;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy