Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/Java/PoVoGenerator/Generator/src/org/litesoft/generator/AbstractTypeGenerator.java

Diff revisions: vs.
  @@ -1,59 +1,59 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.generator;
3 -
4 - import org.litesoft.aokeyhole.objects.*;
5 - import org.litesoft.codegen.*;
6 - import org.litesoft.commonfoundation.typeutils.*;
7 -
8 - import java.util.*;
9 -
10 - public abstract class AbstractTypeGenerator {
11 - protected final ErrorSinc mErrorSinc;
12 - protected final List<SourceCodeGenerator> mGenCollector;
13 - protected final Map<String, ObjectRef> mObjectRefs;
14 - protected final ObjectMetaData mObjectMetaData;
15 -
16 - protected AbstractTypeGenerator( ErrorSinc pErrorSinc, List<SourceCodeGenerator> pGenCollector, Map<String, ObjectRef> pObjectRefs,
17 - ObjectMetaData pObjectMetaData ) {
18 - mErrorSinc = pErrorSinc;
19 - mGenCollector = pGenCollector;
20 - mObjectRefs = pObjectRefs;
21 - mObjectMetaData = pObjectMetaData;
22 - }
23 -
24 - public final ObjectRef generate() {
25 - String zName = mObjectMetaData.getName();
26 - ObjectRef zObjectRef = mObjectRefs.get( zName );
27 - if ( zObjectRef == null ) {
28 - int zInitialCount = mErrorSinc.errorCount();
29 - zObjectRef = new ObjectRef( mErrorSinc, mObjectMetaData );
30 - mObjectRefs.put( zName, zObjectRef );
31 - if ( zInitialCount == mErrorSinc.errorCount() ) {
32 - ObjectRef zParentObjectRef = getParent();
33 - if ( zInitialCount == mErrorSinc.errorCount() ) {
34 - generateTypeSpecificFiles( zObjectRef, zParentObjectRef );
35 - }
36 - }
37 - }
38 - return zObjectRef;
39 - }
40 -
41 - private ObjectRef getParent() {
42 - String zParentName = Strings.noEmpty( mObjectMetaData.getParentName() );
43 - if ( zParentName != null ) {
44 - // Look it up!!!
45 - ObjectMetaData zObject = mObjectMetaData.getSystemMetaData().getObject( zParentName );
46 -
47 - if ( zObject != null ) {
48 - return createParentTypeGenerator( zObject ).generate();
49 - }
50 -
51 - mErrorSinc.addError( "NoParentObject", "Named: " + zParentName, mObjectMetaData.toStringForError() );
52 - }
53 - return null;
54 - }
55 -
56 - abstract protected void generateTypeSpecificFiles( ObjectRef pObjectRef, ObjectRef pParentObjectRef );
57 -
58 - abstract protected AbstractTypeGenerator createParentTypeGenerator( ObjectMetaData pObject );
59 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.generator;
3 +
4 + import org.litesoft.aokeyhole.objects.*;
5 + import org.litesoft.codegen.*;
6 + import org.litesoft.commonfoundation.base.*;
7 +
8 + import java.util.*;
9 +
10 + public abstract class AbstractTypeGenerator {
11 + protected final ErrorSinc mErrorSinc;
12 + protected final List<SourceCodeGenerator> mGenCollector;
13 + protected final Map<String, ObjectRef> mObjectRefs;
14 + protected final ObjectMetaData mObjectMetaData;
15 +
16 + protected AbstractTypeGenerator( ErrorSinc pErrorSinc, List<SourceCodeGenerator> pGenCollector, Map<String, ObjectRef> pObjectRefs,
17 + ObjectMetaData pObjectMetaData ) {
18 + mErrorSinc = pErrorSinc;
19 + mGenCollector = pGenCollector;
20 + mObjectRefs = pObjectRefs;
21 + mObjectMetaData = pObjectMetaData;
22 + }
23 +
24 + public final ObjectRef generate() {
25 + String zName = mObjectMetaData.getName();
26 + ObjectRef zObjectRef = mObjectRefs.get( zName );
27 + if ( zObjectRef == null ) {
28 + int zInitialCount = mErrorSinc.errorCount();
29 + zObjectRef = new ObjectRef( mErrorSinc, mObjectMetaData );
30 + mObjectRefs.put( zName, zObjectRef );
31 + if ( zInitialCount == mErrorSinc.errorCount() ) {
32 + ObjectRef zParentObjectRef = getParent();
33 + if ( zInitialCount == mErrorSinc.errorCount() ) {
34 + generateTypeSpecificFiles( zObjectRef, zParentObjectRef );
35 + }
36 + }
37 + }
38 + return zObjectRef;
39 + }
40 +
41 + private ObjectRef getParent() {
42 + String zParentName = ConstrainTo.significantOrNull( mObjectMetaData.getParentName() );
43 + if ( zParentName != null ) {
44 + // Look it up!!!
45 + ObjectMetaData zObject = mObjectMetaData.getSystemMetaData().getObject( zParentName );
46 +
47 + if ( zObject != null ) {
48 + return createParentTypeGenerator( zObject ).generate();
49 + }
50 +
51 + mErrorSinc.addError( "NoParentObject", "Named: " + zParentName, mObjectMetaData.toStringForError() );
52 + }
53 + return null;
54 + }
55 +
56 + abstract protected void generateTypeSpecificFiles( ObjectRef pObjectRef, ObjectRef pParentObjectRef );
57 +
58 + abstract protected AbstractTypeGenerator createParentTypeGenerator( ObjectMetaData pObject );
59 + }