Subversion Repository Public Repository

litesoft

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// This Source Code is in the Public Domain per: http://unlicense.org
package org.litesoft.generator;

import org.litesoft.commonfoundation.typeutils.*;

import java.util.*;

import org.litesoft.aokeyhole.objects.*;
import org.litesoft.codegen.*;

public abstract class AbstractTypeGenerator
{
    protected final ErrorSinc mErrorSinc;
    protected final List<SourceCodeGenerator> mGenCollector;
    protected final Map<String, ObjectRef> mObjectRefs;
    protected final ObjectMetaData mObjectMetaData;

    protected AbstractTypeGenerator( ErrorSinc pErrorSinc, List<SourceCodeGenerator> pGenCollector, Map<String, ObjectRef> pObjectRefs, ObjectMetaData pObjectMetaData )
    {
        mErrorSinc = pErrorSinc;
        mGenCollector = pGenCollector;
        mObjectRefs = pObjectRefs;
        mObjectMetaData = pObjectMetaData;
    }

    public final ObjectRef generate()
    {
        String zName = mObjectMetaData.getName();
        ObjectRef zObjectRef = mObjectRefs.get( zName );
        if ( zObjectRef == null )
        {
            int zInitialCount = mErrorSinc.errorCount();
            zObjectRef = new ObjectRef( mErrorSinc, mObjectMetaData );
            mObjectRefs.put( zName, zObjectRef );
            if ( zInitialCount == mErrorSinc.errorCount() )
            {
                ObjectRef zParentObjectRef = getParent();
                if ( zInitialCount == mErrorSinc.errorCount() )
                {
                    generateTypeSpecificFiles( zObjectRef, zParentObjectRef );
                }
            }
        }
        return zObjectRef;
    }

    private ObjectRef getParent()
    {
        String zParentName = Strings.noEmpty( mObjectMetaData.getParentName() );
        if ( zParentName != null )
        {
            // Look it up!!!
            ObjectMetaData zObject = mObjectMetaData.getSystemMetaData().getObject( zParentName );

            if ( zObject != null )
            {
                return createParentTypeGenerator( zObject ).generate();
            }

            mErrorSinc.addError( "NoParentObject", "Named: " + zParentName, mObjectMetaData.toStringForError() );
        }
        return null;
    }

    abstract protected void generateTypeSpecificFiles( ObjectRef pObjectRef, ObjectRef pParentObjectRef );

    abstract protected AbstractTypeGenerator createParentTypeGenerator( ObjectMetaData pObject );
}

Commits for litesoft/trunk/Java/PoVoGenerator/Generator/src/org/litesoft/generator/AbstractTypeGenerator.java

Diff revisions: vs.
Revision Author Commited Message
947 Diff Diff GeorgeS picture GeorgeS Fri 06 Jun, 2014 23:36:56 +0000

Correct Spelling of package!

939 Diff Diff GeorgeS picture GeorgeS Mon 02 Jun, 2014 21:30:31 +0000

Extracting commonfoundation

801 Diff Diff GeorgeS picture GeorgeS Wed 15 Aug, 2012 03:59:02 +0000
49 Diff Diff GeorgeS picture GeorgeS Mon 12 Apr, 2010 02:59:10 +0000

License Text

21 Diff Diff GeorgeS picture GeorgeS Tue 23 Feb, 2010 21:11:25 +0000
2 GeorgeS picture GeorgeS Sun 07 Feb, 2010 12:50:58 +0000