/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * http://www.apache.org/licenses/LICENSE-2.0 * * 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.drools.core.meta.org.test; import org.drools.core.factmodel.traits.AbstractTraitFactory; import org.drools.core.metadata.ClassLiteral; import org.drools.core.metadata.DonLiteral; import org.drools.core.metadata.Lit; import org.drools.core.metadata.ManyToManyPropertyLiteral; import org.drools.core.metadata.ManyValuedMetaProperty; import org.drools.core.metadata.MetaClass; import org.drools.core.metadata.MetaProperty; import org.drools.core.metadata.MetadataContainer; import org.drools.core.metadata.ModifyLiteral; import org.drools.core.metadata.NewInstanceLiteral; import org.drools.core.metadata.OneToManyPropertyLiteral; import org.drools.core.metadata.OneToOnePropertyLiteral; import org.drools.core.metadata.OneValuedMetaProperty; import org.drools.core.metadata.ToOnePropertyLiteral; import org.drools.core.metadata.With; import org.drools.core.util.ClassUtils; import java.io.Serializable; import java.net.URI; import java.util.Collections; import java.util.List; public class AnotherKlass_<T extends AnotherKlass> extends MetadataContainer<T> implements Serializable { public AnotherKlass_( T x ) { super( x ); metaClassInfo = AnotherKlass_Meta.getInstance(); } public static final OneValuedMetaProperty<AnotherKlass,Integer> num = AnotherKlass_Meta.num; public static final OneValuedMetaProperty<AnotherKlass,Klass> theKlass = AnotherKlass_Meta.theKlass; public static final ManyValuedMetaProperty<AnotherKlass,Klass,List<Klass>> manyKlasses = AnotherKlass_Meta.manyKlasses; public static final ManyValuedMetaProperty<AnotherKlass,Klass,List<Klass>> manyMoreKlasses = AnotherKlass_Meta.manyMoreKlasses; public static <T extends AnotherKlass> AnotherKlass_NewInstance<T> newAnotherKlass( Object id, With... args ) { return AnotherKlass_Meta.getInstance().newInstance( id, args ); } public static <T extends AnotherKlass> AnotherKlass_NewInstance<T> newAnotherKlass( With... args ) { return AnotherKlass_Meta.getInstance().newInstance( args ); } public static AnotherKlass_Modify<? extends AnotherKlass> modify( AnotherKlass x, With... args ) { return new AnotherKlass_Modify<AnotherKlass>( x, args ); } public AnotherKlass_Modify<T> modify( With... args ) { return new AnotherKlass_Modify<T>( getTarget(), args ); } public static <X, K extends AnotherKlass> AnotherKlass_Don<X,K> donAnotherKlass( X core, With... args ) { return new AnotherKlass_Don<X,K>( core, args ); } public static class AnotherKlass_NewInstance<T extends AnotherKlass> extends NewInstanceLiteral<T> implements Serializable { public AnotherKlass_NewInstance( Object id, With... args ) { super( id, args ); } public AnotherKlass_NewInstance( With... args ) { super( args ); } protected T construct() { return (T) new AnotherKlassImpl(); } public AnotherKlass_NewInstance<T> num( int val ) { getSetter().num( val ); return this; } public AnotherKlass_NewInstance<T> manyKlasses( List<Klass> val, Lit mode ) { getSetter().manyKlasses( val, mode ); return this; } public AnotherKlass_NewInstance<T> manyKlasses( Klass val, Lit mode ) { getSetter().manyKlasses( val, mode ); return this; } public AnotherKlass_NewInstance<T> manyMoreKlasses( List<Klass> val, Lit mode ) { getSetter().manyMoreKlasses( val, mode ); return this; } public AnotherKlass_NewInstance<T> manyMoreKlasses( Klass val, Lit mode ) { getSetter().manyMoreKlasses( val, mode ); return this; } public AnotherKlass_NewInstance<T> theKlass( Klass val ) { getSetter().theKlass( val ); return this; } protected AnotherKlass_Modify<T> getSetter() { if ( setter == null ) { setter = new AnotherKlass_Modify( null, this.with ); } return (AnotherKlass_Modify<T>) setter; } @Override public Class<T> getInstanceClass() { return AnotherKlass_Meta.getInstance().getTargetClass(); } } public static class AnotherKlass_Modify<T extends AnotherKlass> extends ModifyLiteral<T> implements Serializable { public AnotherKlass_Modify( T x, With... args ) { super( x, args ); } public AnotherKlass_Modify num( int newVal ) { addTask( num, newVal ); return this; } public AnotherKlass_Modify theKlass( Klass newVal ) { addTask( theKlass, newVal, newVal != null ? Lit.SET : Lit.REMOVE ); return this; } public AnotherKlass_Modify<T> manyKlasses( List<Klass> val, Lit mode ) { addTask( manyKlasses, val, mode ); return this; } public AnotherKlass_Modify<T> manyKlasses( Klass val, Lit mode ) { addTask( manyKlasses, Collections.singletonList( val ), mode ); return this; } public AnotherKlass_Modify<T> manyMoreKlasses( List<Klass> val, Lit mode ) { addTask( manyMoreKlasses, val, mode ); return this; } public AnotherKlass_Modify<T> manyMoreKlasses( Klass val, Lit mode ) { addTask( manyMoreKlasses, Collections.singletonList( val ), mode ); return this; } @Override protected MetaClass<T> getMetaClassInfo() { return AnotherKlass_Meta.getInstance(); } public Class getModificationClass() { return AnotherKlass.class; } } protected static class AnotherKlass_Meta<T extends AnotherKlass> extends ClassLiteral<T> implements Serializable { private static AnotherKlass_Meta instance; public static AnotherKlass_Meta getInstance() { if ( instance == null ) { instance = new AnotherKlass_Meta( new MetaProperty[] { num, theKlass, manyKlasses, manyMoreKlasses } ); } return instance; } public static final OneValuedMetaProperty<AnotherKlass,Integer> num = new ToOnePropertyLiteral<AnotherKlass,Integer>( 0, "num", URI.create( "http://www.test.org#AnotherKlass?num" ) ) { public Integer get( AnotherKlass o ) { return o.getNum(); } public void set( AnotherKlass o, Integer value ) { o.setNum( value ); } public boolean isDatatype() { return true; } }; public static final OneValuedMetaProperty<AnotherKlass,Klass> theKlass = new OneToOnePropertyLiteral<AnotherKlass, Klass>( 1, "theKlass", URI.create( "http://www.test.org#AnotherKlass?theKlass" ) ) { public Klass get( AnotherKlass o ) { return o.getTheKlass(); } public void set( AnotherKlass o, Klass value ) { o.setTheKlass( value ); } @Override public OneValuedMetaProperty<Klass, AnotherKlass> getInverse() { return Klass_.another; } public boolean isDatatype() { return false; } }; public static final ManyValuedMetaProperty<AnotherKlass,Klass,List<Klass>> manyKlasses = new OneToManyPropertyLiteral<AnotherKlass,Klass>( 2, "manyKlasses", URI.create( "http://www.test.org#AnotherKlass?manyKlasses" ) ) { public List<Klass> get( AnotherKlass o ) { return o.getManyKlasses(); } public void set( AnotherKlass o, List<Klass> value ) { o.setManyKlasses( value ); } @Override public OneValuedMetaProperty<Klass, AnotherKlass> getInverse() { return Klass_.oneAnother; } public boolean isDatatype() { return false; } }; public static final ManyValuedMetaProperty<AnotherKlass,Klass,List<Klass>> manyMoreKlasses = new ManyToManyPropertyLiteral<AnotherKlass,Klass>( 3, "manyMoreKlasses", URI.create( "http://www.test.org#AnotherKlass?manyMoreKlasses" ) ) { public List<Klass> get( AnotherKlass o ) { return o.getManyMoreKlasses(); } public void set( AnotherKlass o, List<Klass> value ) { o.setManyMoreKlasses( value ); } @Override public ManyValuedMetaProperty<Klass,AnotherKlass,List<AnotherKlass>> getInverse() { return Klass_.manyOthers; } public boolean isDatatype() { return false; } }; protected AnotherKlass_Meta( MetaProperty<T,?,?>[] propertyLiterals ) { super( propertyLiterals ); } @Override protected void cachePropertyNames() { propertyNames = ClassUtils.getAccessibleProperties( AnotherKlass.class ); } public AnotherKlass_NewInstance<T> newInstance( Object id, With... args ) { return new AnotherKlass_NewInstance<T>( id, args ); } public AnotherKlass_NewInstance<T> newInstance( With... args ) { return new AnotherKlass_NewInstance<T>( args ); } @Override public URI getUri() { if ( key == null ) { key = URI.create( "http://www.test.org#AnotherKlass" ); } return key; } @Override public Object getId() { return getUri(); } @Override public Class<T> getTargetClass() { return (Class<T>) AnotherKlass.class; } } public static class AnotherKlass_Don<K, T extends AnotherKlass> extends DonLiteral<K,T> implements Serializable { public AnotherKlass_Don( K target, With... args ) { super( target, args ); } @Override protected MetaClass<T> getMetaClassInfo() { return AnotherKlass_Meta.getInstance(); } @Override public Class<T> getTrait() { return AnotherKlass_Meta.getInstance().getTargetClass(); } @Override public AnotherKlass_Don<K,T> setTraitFactory( AbstractTraitFactory factory ) { super.setTraitFactory( factory ); return this; } public AnotherKlass_Don<K,T> num( int newVal ) { getSetter().num( newVal ); return this; } public AnotherKlass_Don<K,T> num( Klass newVal ) { getSetter().theKlass( newVal ); return this; } public AnotherKlass_Don<K,T> manyKlasses( List<Klass> val, Lit mode ) { getSetter().manyKlasses( val, mode ); return this; } public AnotherKlass_Don<K,T> manyKlasses( Klass val, Lit mode ) { getSetter().manyKlasses( val, mode ); return this; } public AnotherKlass_Don<K,T> manyMoreKlasses( List<Klass> val, Lit mode ) { getSetter().manyMoreKlasses( val, mode ); return this; } public AnotherKlass_Don<K,T> manyMoreKlasses( Klass val, Lit mode ) { getSetter().manyMoreKlasses( val, mode ); return this; } protected AnotherKlass_Modify<T> getSetter() { if ( setter == null ) { setter = new AnotherKlass_Modify( null, this.with ); } return (AnotherKlass_Modify<T>) setter; } } }