1 /* 2 * Copyright 2008 Lukas Lang 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 * 16 */ 17 package org.exolab.castor.builder.info.nature; 18 19 import org.castor.core.nature.BaseNature; 20 import org.exolab.castor.builder.info.FieldInfo; 21 22 /** 23 * A JDO specific view of a {@link FieldInfo}. Implementation based on property access 24 * on {@link FieldInfo}. 25 * 26 * @author Lukas Lang 27 * @since 1.2.1 28 */ 29 public final class JDOFieldInfoNature extends BaseNature { 30 31 /** 32 * Constant for the property name for the sql type of the column. 33 */ 34 private static final String COLUMN_TYPE = "columntype"; 35 /** 36 * Constant for the property name for the name of the column. 37 */ 38 private static final String COLUMN_NAME = "columnname"; 39 /** 40 * Constant for the property read only. 41 */ 42 private static final String READONLY = "readonly"; 43 /** 44 * Constant for the property dirty. 45 */ 46 private static final String DIRTY = "dirty"; 47 48 /** 49 * Constructor taking a FieldInfo. 50 * 51 * @param fieldInfo 52 * in focus. 53 */ 54 public JDOFieldInfoNature(final FieldInfo fieldInfo) { 55 super(fieldInfo); 56 } 57 58 /** 59 * Returns the fully qualified class name of the Nature. 60 * 61 * @return the nature id. 62 * @see org.exolab.castor.builder.info.nature.Nature#getId() 63 */ 64 public String getId() { 65 return getClass().getName(); 66 } 67 68 /** 69 * Retrieves the sql column name. 70 * 71 * @return name of the column. 72 */ 73 public String getColumnName() { 74 return (String) this.getProperty(COLUMN_NAME); 75 } 76 77 /** 78 * Returns the sql type of the column. 79 * 80 * @return the sql type. 81 */ 82 public String getColumnType() { 83 return (String) this.getProperty(COLUMN_TYPE); 84 } 85 86 /** 87 * Sets the sql column name. 88 * 89 * @param columnName 90 * name of the column. 91 */ 92 public void setColumnName(final String columnName) { 93 this.setProperty(COLUMN_NAME, columnName); 94 } 95 96 /** 97 * Sets the column sql type. 98 * 99 * @param sqlType 100 * of the column. 101 */ 102 public void setColumnType(final String sqlType) { 103 this.setProperty(COLUMN_TYPE, sqlType); 104 } 105 106 /** 107 * Returns true if no update on the column can be performed, false 108 * otherwise. Default value is false. 109 * 110 * @return true if readonly, false if not or not set. 111 */ 112 public boolean isReadOnly() { 113 return getBooleanPropertyDefaultFalse(READONLY); 114 } 115 116 /** 117 * Sets the column read only. 118 * 119 * @param readOnly 120 * true if read only. 121 */ 122 public void setReadOnly(final boolean readOnly) { 123 setProperty(READONLY, new Boolean(readOnly)); 124 } 125 126 /** 127 * Returns true if field will NOT be checked against the database for 128 * modification, otherwise false. Default value is false. 129 * 130 * @return true if field is not updated, false if not or not set. 131 */ 132 public boolean isDirty() { 133 return getBooleanPropertyDefaultFalse(DIRTY); 134 } 135 136 /** 137 * If set true, field will NOT be checked against the database for 138 * modification, otherwise set false. 139 * 140 * @param dirty 141 * true if field should not be updated. 142 */ 143 public void setDirty(final boolean dirty) { 144 setProperty(DIRTY, new Boolean(dirty)); 145 } 146 147 }