/** * Returns a string representation of the object using a prefix This can be used as part of a * facility to output a MetaData file. * * @param prefix prefix string * @param indent indent string * @return a string representation of the object. */ public String toString(String prefix, String indent) { // Field needs outputting so generate metadata StringBuilder sb = new StringBuilder(); sb.append(prefix) .append( "<version strategy=\"" + versionStrategy.toString() + "\"" + (indexed != null ? (" indexed=\"" + indexed.toString() + "\"") : "")); if (columnName != null && columnMetaData == null) { sb.append(" column=\"" + columnName + "\""); } sb.append(">\n"); // Column MetaData if (columnMetaData != null) { sb.append(columnMetaData.toString(prefix + indent, indent)); } // Add index if (indexMetaData != null) { sb.append(indexMetaData.toString(prefix + indent, indent)); } // Add extensions sb.append(super.toString(prefix + indent, indent)); sb.append(prefix).append("</version>\n"); return sb.toString(); }
/** * Initialisation method. This should be called AFTER using the populate method if you are going * to use populate. It creates the internal convenience arrays etc needed for normal operation. */ public void initialise(ClassLoaderResolver clr, MetaDataManager mmgr) { if (hasExtension("field-name")) { // User has provided extension "field-name" meaning that we store the version in the column // for the specified field (like in JPA) String val = getValueForExtension("field-name"); if (!StringUtils.isWhitespace(val)) { this.fieldName = val; this.columnName = null; } } if (fieldName == null) { // Cater for user specifying column name, or column if (columnMetaData == null && columnName != null) { columnMetaData = new ColumnMetaData(); columnMetaData.setName(columnName); columnMetaData.parent = this; } // Interpret the "indexed" value to create our IndexMetaData where it wasn't specified that // way if (indexMetaData == null && columnMetaData != null && indexed != null && indexed != IndexedValue.FALSE) { indexMetaData = new IndexMetaData(); indexMetaData.setUnique(indexed == IndexedValue.UNIQUE); indexMetaData.addColumn(columnMetaData.getName()); indexMetaData.parent = this; } } else { if (getParent() instanceof AbstractClassMetaData) { AbstractMemberMetaData vermmd = ((AbstractClassMetaData) getParent()).getMetaDataForMember(fieldName); if (vermmd != null && java.util.Date.class.isAssignableFrom(vermmd.getType())) { NucleusLogger.GENERAL.debug( "Setting version-strategy of field " + vermmd.getFullFieldName() + " to DATE_TIME since is Date-based"); versionStrategy = VersionStrategy.DATE_TIME; } } } }