litesoft
@ 804
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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 |
// This Source Code is in the Public Domain per: http://litesoft.org/License.txt package org.litesoft.ui.def.nonpublic.support; import org.litesoft.core.typeutils.*; import org.litesoft.core.util.*; import org.litesoft.ui.support.*; public abstract class AbstractFormUsage implements Comparable, ToStringBuilder { // Basic Base Form abstract public boolean isHot(); abstract public String getRootType(); // Basic Sub Form abstract public String getRelAttributeRef(); // Shared abstract public Integer getUniqueID(); abstract public IntendedUse getIntendedUse(); abstract public LabelUsage[] getLabels(); abstract public ActionUsage[] getActions(); abstract public AttributeUsage[] getAttributes(); abstract public FormUsage[] getRelSubForms(); public boolean isBaseForm() { return (getRootType() != null); } public final int compareTo( AbstractFormUsage pThem ) { Compare zCompare; if ( isBaseForm() ) { zCompare = Compare.first( this.getRootType(), pThem.getRootType() ); zCompare = zCompare.then( this.isHot(), pThem.isHot() ); } else { zCompare = Compare.first( this.getRelAttributeRef(), pThem.getRelAttributeRef() ); } zCompare = zCompare.then( this.getUniqueID(), pThem.getUniqueID() ); zCompare = zCompare.then( this.getIntendedUse(), pThem.getIntendedUse() ); return zCompare.result(); } public final int compareTo( Object pObject ) { return compareTo( (AbstractFormUsage) pObject ); } protected final boolean LLequals( AbstractFormUsage pThem ) { return (pThem != null) && // Objects.areNonArraysEqual( this.getRelAttributeRef(), pThem.getRelAttributeRef() ) && // Objects.areNonArraysEqual( this.getRootType(), pThem.getRootType() ) && // UtilsCommon.areNonArraysEqual( this.isHot(), pThem.isHot() ) && // Objects.areNonArraysEqual( this.getIntendedUse(), pThem.getIntendedUse() ) && // Objects.areNonArraysEqual( this.getUniqueID(), pThem.getUniqueID() ); } public final int hashCode() { return getRootOrRel().hashCode(); } protected final String getRootOrRel() { return isBaseForm() ? getRootType() : getRelAttributeRef(); } public final StringBuilder toStringBuilder( StringBuilder pSB, int pDepth ) { pSB.append( getIntendedUse() ).append( ',' ).append( getRootOrRel() ); if ( isHot() ) { pSB.append( " (-HOT-)" ); } if ( anyChildren() ) { pSB.append( ":" ); int subDepth = pDepth + 1; addPreChildren( pSB, subDepth ); add( pSB, subDepth, "Labels", getLabels() ); add( pSB, subDepth, "Actions", getActions() ); add( pSB, subDepth, "Attributes", getAttributes() ); add( pSB, subDepth, "RelSubForms", getRelSubForms() ); addPostChildren( pSB, subDepth ); } return pSB; } protected void addPreChildren( StringBuilder pSB, int pDepth ) { } protected void addPostChildren( StringBuilder pSB, int pDepth ) { } abstract protected boolean anyChildren(); protected static void add( StringBuilder pSB, int pDepth, String pWhat, ToStringBuilder[] pBuilders ) { if ( pBuilders.length != 0 ) { LineIndentUtil.newLine( pSB, pDepth++ ).append( pWhat ).append( ':' ); for ( int i = 0; i < pBuilders.length; i++ ) { pBuilders[i].toStringBuilder( LineIndentUtil.newLine( pSB, pDepth ), pDepth ); } } } protected static String required( String pWhat, String pSource ) { return UtilsCommon.assertNotNullNotEmpty( pWhat, pSource ); } } |