|
@@ -6,6 +6,7 @@ |
6 |
6 |
|
import org.litesoft.aokeyhole.objects.attributes.*; |
7 |
7 |
|
import org.litesoft.aokeyhole.objects.factories.*; |
8 |
8 |
|
import org.litesoft.aokeyhole.objects.support.*; |
|
9 |
+ |
import org.litesoft.aokeyhole.persist.*; |
9 |
10 |
|
import org.litesoft.aokeyhole.toolkit.*; |
10 |
11 |
|
import org.litesoft.core.simpletypes.nonpublic.*; |
11 |
12 |
|
|
|
@@ -27,7 +28,8 @@ |
27 |
28 |
|
private ObjectProxy mParent; |
28 |
29 |
|
private ObjectMetaData[] mGeneratedRelationsByParent = EMPTY_ARRAY; |
29 |
30 |
|
|
30 |
|
- |
public ObjectMetaData( Mode pMode, boolean pEditable, ObjectSet pObjectSet, IdentifierValidator pNameValidator, String pName, AttributeFactory pAttributeFactory ) |
|
31 |
+ |
public ObjectMetaData( Mode pMode, boolean pEditable, ObjectSet pObjectSet, IdentifierValidator pNameValidator, String pName, |
|
32 |
+ |
AttributeFactory pAttributeFactory ) |
31 |
33 |
|
{ |
32 |
34 |
|
super( pObjectSet.getType(), pMode, pEditable, pNameValidator, pName ); |
33 |
35 |
|
|
|
@@ -99,9 +101,9 @@ |
99 |
101 |
|
return add( mAttributeFactory.createAttributeMetaDataID( getObjectSet(), Mode.Rehydrating, isEditable(), pName ) ); |
100 |
102 |
|
} |
101 |
103 |
|
|
102 |
|
- |
public AttributeMetaData unpersistAttributeValidOptions( AttributeType pType, String[] pNameAndOptions, boolean pVirtual ) |
|
104 |
+ |
public AttributeMetaData unpersistAttributeValidOptions( AttributeType pType, String pName, String[] pOptions, boolean pVirtual ) |
103 |
105 |
|
{ |
104 |
|
- |
return add( mAttributeFactory.createAttributeMetaDataValidOptions( getObjectSet(), Mode.Rehydrating, isEditable(), pType, pVirtual, pNameAndOptions ) ); |
|
106 |
+ |
return add( mAttributeFactory.createAttributeMetaDataValidOptions( getObjectSet(), Mode.Rehydrating, isEditable(), pType, pVirtual, pName, pOptions ) ); |
105 |
107 |
|
} |
106 |
108 |
|
|
107 |
109 |
|
public AttributeMetaData unpersistAttributeSimple( AttributeType pType, String pName, boolean pVirtual ) |
|
@@ -111,7 +113,8 @@ |
111 |
113 |
|
|
112 |
114 |
|
public AttributeMetaData unpersistAttributeRelatedVirtual( AttributeType pType, String pName, String pRelatedToName ) |
113 |
115 |
|
{ |
114 |
|
- |
AttributeMetaDataRelatedVirtual md = mAttributeFactory.createAttributeMetaDataRelatedVirtual( getObjectSet(), Mode.Rehydrating, isEditable(), pType, pName ); |
|
116 |
+ |
AttributeMetaDataRelatedVirtual md = |
|
117 |
+ |
mAttributeFactory.createAttributeMetaDataRelatedVirtual( getObjectSet(), Mode.Rehydrating, isEditable(), pType, pName ); |
115 |
118 |
|
add( md ); |
116 |
119 |
|
md.unpersistRelatedTo( pRelatedToName ); |
117 |
120 |
|
return md; |
|
@@ -119,7 +122,8 @@ |
119 |
122 |
|
|
120 |
123 |
|
public AttributeMetaData unpersistAttributeRelatedPersisted( AttributeType pType, String pName, String pRelatedToName, String pBackAttrib ) |
121 |
124 |
|
{ |
122 |
|
- |
AttributeMetaDataRelatedPersisted md = mAttributeFactory.createAttributeMetaDataRelatedPersisted( getObjectSet(), Mode.Rehydrating, isEditable(), pType, pName ); |
|
125 |
+ |
AttributeMetaDataRelatedPersisted md = |
|
126 |
+ |
mAttributeFactory.createAttributeMetaDataRelatedPersisted( getObjectSet(), Mode.Rehydrating, isEditable(), pType, pName ); |
123 |
127 |
|
add( md ); |
124 |
128 |
|
md.unpersistRelatedTo( pRelatedToName ); |
125 |
129 |
|
md.unpersistBackAttrib( pBackAttrib ); |
|
@@ -183,7 +187,7 @@ |
183 |
187 |
|
} |
184 |
188 |
|
if ( pType instanceof AbstractValidOptionsAttributeTypeSimple ) |
185 |
189 |
|
{ |
186 |
|
- |
return add( mAttributeFactory.createAttributeMetaDataValidOptions( getObjectSet(), Mode.New, isEditable(), pType, pVirtual, (String) null ) ); |
|
190 |
+ |
return add( mAttributeFactory.createAttributeMetaDataValidOptions( getObjectSet(), Mode.New, isEditable(), pType, pVirtual, null ) ); |
187 |
191 |
|
} |
188 |
192 |
|
// Simple |
189 |
193 |
|
return add( mAttributeFactory.createAttributeMetaDataSimple( getObjectSet(), Mode.New, isEditable(), pType, pVirtual, null ) ); |
|
@@ -456,88 +460,68 @@ |
456 |
460 |
|
return shrunk; |
457 |
461 |
|
} |
458 |
462 |
|
|
459 |
|
- |
@Override |
460 |
|
- |
public void addLines( List<String> pCollector, int pIndent ) |
|
463 |
+ |
public void addTo( SubSystemBuilder pBuilder ) |
461 |
464 |
|
{ |
462 |
|
- |
pCollector.add( "" ); |
463 |
|
- |
pCollector.add( "" ); |
464 |
|
- |
StringBuilder sb = startLine( pIndent ); |
465 |
|
- |
String parentName = getParentName(); |
466 |
|
- |
if ( parentName != null ) |
|
465 |
+ |
ObjectBuilder zBuilder = |
|
466 |
+ |
pBuilder.createObjectBuilder( getMetaDataType(), getName(), getParentName(), SingleLineNotes.convertStringToLines( getNotes() ) ); |
|
467 |
+ |
mPropertyManager.addTo( zBuilder ); |
|
468 |
+ |
for ( AttributeMetaData zAttribute : getSortedAttributes() ) |
467 |
469 |
|
{ |
468 |
|
- |
sb.append( '|' ).append( parentName ); |
|
470 |
+ |
zAttribute.addTo( zBuilder ); |
469 |
471 |
|
} |
470 |
|
- |
pCollector.add( sb.toString() ); |
471 |
|
- |
pIndent += 2; |
472 |
|
- |
addNonNullLine( pCollector, pIndent, AttribNames.NOTES, getNotes() ); |
473 |
|
- |
mPropertyManager.addLines( pCollector, pIndent ); |
474 |
|
- |
addOwnings( pCollector, --pIndent, getSortedAttributes() ); |
|
472 |
+ |
zBuilder.done(); |
475 |
473 |
|
} |
476 |
474 |
|
|
477 |
|
- |
public void populateFrom( ToLinesObjectsParseStream pOPS ) |
|
475 |
+ |
public void populateFrom( ObjectReader pReader ) |
478 |
476 |
|
{ |
479 |
|
- |
while ( pOPS.isNextDepth( 2 ) ) // Properties |
|
477 |
+ |
unpersistNotes( SingleLineNotes.convertLinesToString( pReader.getNotes() ) ); |
|
478 |
+ |
for ( PropertyReader zReader; null != (zReader = pReader.nextProperty()); ) |
480 |
479 |
|
{ |
481 |
|
- |
pOPS.readLine(); |
482 |
|
- |
String zWhat = pOPS.getWhat(); |
483 |
|
- |
String zData = pOPS.getData(); |
484 |
|
- |
if ( ObjectNames.NOTES.equals( zWhat ) ) |
485 |
|
- |
{ |
486 |
|
- |
unpersistNotes( zData ); |
487 |
|
- |
} |
488 |
|
- |
else |
489 |
|
- |
{ |
490 |
|
- |
mPropertyManager.unpersistProperty( zWhat, zData ); |
491 |
|
- |
} |
|
480 |
+ |
String zWhat = zReader.getWhat(); |
|
481 |
+ |
String zData = zReader.getData(); |
|
482 |
+ |
mPropertyManager.unpersistProperty( zWhat, zData ); |
492 |
483 |
|
} |
493 |
|
- |
while ( pOPS.isNextDepth( 1 ) ) // Attributes |
|
484 |
+ |
for ( AttributeReader zReader; null != (zReader = pReader.nextAttribute()); ) |
494 |
485 |
|
{ |
495 |
|
- |
pOPS.readLine(); |
496 |
|
- |
String zWhat = pOPS.getWhat(); |
|
486 |
+ |
String zType = zReader.getType(); |
497 |
487 |
|
|
498 |
|
- |
boolean zVirtual = zWhat.startsWith( ObjectNames.VIRTUAL_PREFIX ); |
499 |
|
- |
if ( zVirtual ) |
500 |
|
- |
{ |
501 |
|
- |
zWhat = zWhat.substring( ObjectNames.VIRTUAL_PREFIX.length() ); |
502 |
|
- |
} |
503 |
|
- |
AttributeSet zSet = determineAttributeSet( zWhat, zVirtual ); |
|
488 |
+ |
boolean zVirtual = zReader.isVirtual(); |
|
489 |
+ |
AttributeSet zSet = determineAttributeSet( zType, zVirtual ); |
504 |
490 |
|
if ( zSet == null ) |
505 |
491 |
|
{ |
506 |
|
- |
throw pOPS.error( "Unrecognized Attribute-type '" + pOPS.getWhat() + "', not" + mAttributeFactory.getTypesForError() ); |
|
492 |
+ |
throw zReader.unrecognizedType( |
|
493 |
+ |
"Unrecognized Attribute-type '" + (zVirtual ? "Virtual-" : "") + zType + "', not" + mAttributeFactory.getTypesForError() ); |
507 |
494 |
|
} |
508 |
495 |
|
|
509 |
|
- |
AttributeMetaData md = createAttributeMetaData( zSet, zVirtual, pOPS ); |
510 |
|
- |
|
511 |
|
- |
md.populateFrom( pOPS ); |
|
496 |
+ |
createAttributeMetaData( zSet, zVirtual, zReader ).populateFrom( zReader ); |
512 |
497 |
|
} |
513 |
498 |
|
} |
514 |
499 |
|
|
515 |
|
- |
private AttributeMetaData createAttributeMetaData( AttributeSet pSet, boolean pVirtual, ToLinesObjectsParseStream pOPS ) |
|
500 |
+ |
private AttributeMetaData createAttributeMetaData( AttributeSet pSet, boolean pVirtual, AttributeReader pReader ) |
516 |
501 |
|
{ |
517 |
|
- |
String[] parts; |
518 |
502 |
|
AttributeType zType = pSet.getType(); |
519 |
503 |
|
FundamentalAttributeType zFAT = zType.getFAT(); |
520 |
504 |
|
if ( zFAT.isRelated() ) |
521 |
505 |
|
{ |
|
506 |
+ |
String[] parts; |
522 |
507 |
|
if ( pVirtual ) |
523 |
508 |
|
{ |
524 |
|
- |
parts = pOPS.parseData( 2, '|' ); |
525 |
|
- |
return unpersistAttributeRelatedVirtual( zType, parts[0], parts[1] ); |
|
509 |
+ |
parts = pReader.getAdditionalValues( 1 ); |
|
510 |
+ |
return unpersistAttributeRelatedVirtual( zType, pReader.getName(), parts[0] ); // RelatedToName |
526 |
511 |
|
} |
527 |
|
- |
parts = pOPS.parseData( 3, '|' ); |
528 |
|
- |
return unpersistAttributeRelatedPersisted( zType, parts[0], parts[1], parts[2] ); |
|
512 |
+ |
parts = pReader.getAdditionalValues( 2 ); |
|
513 |
+ |
return unpersistAttributeRelatedPersisted( zType, pReader.getName(), parts[0], parts[1] ); // RelatedToName, BackAttrib |
529 |
514 |
|
} |
530 |
515 |
|
if ( zType instanceof AbstractValidOptionsAttributeTypeSimple ) |
531 |
516 |
|
{ |
532 |
|
- |
parts = pOPS.parseData( '|' ); |
533 |
|
- |
return unpersistAttributeValidOptions( zType, parts, pVirtual ); |
|
517 |
+ |
return unpersistAttributeValidOptions( zType, pReader.getName(), pReader.getAdditionalValues( null ), pVirtual ); |
534 |
518 |
|
} |
535 |
|
- |
parts = pOPS.parseData( 1, '|' ); |
|
519 |
+ |
pReader.getAdditionalValues( 0 ); |
536 |
520 |
|
if ( zType instanceof A_ID ) |
537 |
521 |
|
{ |
538 |
|
- |
return unpersistAttributeID( parts[0] ); |
|
522 |
+ |
return unpersistAttributeID( pReader.getName() ); |
539 |
523 |
|
} |
540 |
|
- |
return unpersistAttributeSimple( zType, parts[0], pVirtual ); |
|
524 |
+ |
return unpersistAttributeSimple( zType, pReader.getName(), pVirtual ); |
541 |
525 |
|
} |
542 |
526 |
|
|
543 |
527 |
|
private AttributeSet determineAttributeSet( String pWhat, boolean pVirtual ) |