blob: dc6066dbc685c88e6d7f78df3fa4710733b8f392 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.netbeans.modules.j2ee.persistence.entitygenerator;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
import org.netbeans.modules.j2ee.persistence.wizard.fromdb.UpdateType;
import org.openide.filesystems.FileObject;
/**
* Abstract description of an entity class
* (either CMP or Java Persistence API).
*
* @author Chris Webster, Martin Adamek, Andrei Badea
*/
public class EntityClass {
private final String catalogName;
private final String schemaName;
private final String tableName;
private final FileObject rootFolder;
private final String className;
private final String packageName;
private final Set<List<String>> uniqueConstraints;
private final UpdateType updateType;
private List<RelationshipRole> roles;
private List<EntityMember> fields;
private boolean usePkField;
private boolean derivedIdCandidate;//derived id should be used in jpa2.0+
private String pkFieldName;
private CMPMappingModel mappingModel;
private boolean forTable = true; // false means forView
private final boolean useDefaults;
public EntityClass( String catalogName, String schemaName, String tableName,
FileObject rootFolder, String packageName, String className, UpdateType updateType, boolean useDefaults, Set<List<String>> uniqueConstraints) {
this.catalogName = catalogName;
this.schemaName = schemaName;
this.tableName = tableName;
this.rootFolder = rootFolder;
this.packageName = packageName;
this.className = className;
this.updateType = updateType;
this.uniqueConstraints = uniqueConstraints;
this.useDefaults = useDefaults;
roles = Collections.<RelationshipRole>emptyList();
fields = new ArrayList<EntityMember>();
mappingModel = new CMPMappingModel();
}
public boolean isForTable() {
return this.forTable;
}
public void setIsForTable( boolean forTable) {
this.forTable = forTable;
}
public Set<List<String>> getUniqueConstraints() {
return this.uniqueConstraints;
}
public void addRole(RelationshipRole role) {
if (roles == Collections.<RelationshipRole>emptyList()) {
roles = new ArrayList<RelationshipRole>();
}
roles.add(role);
}
public List<RelationshipRole> getRoles() {
return roles;
}
public List<EntityMember> getFields() {
return fields;
}
public boolean getUseDefaults(){
return useDefaults;
}
public void setFields(List<EntityMember> fields) {
this.fields = fields;
}
@Override
public String toString() {
String cmpFields = ""; // NOI18N
for (EntityMember entityMember : getFields()) {
cmpFields += " " + entityMember.getMemberName() + (entityMember.isPrimaryKey() ? " (PK) " : " "); // NOI18N
}
return "bean name " + getClassName() + // NOI18N
"\ncmp-fields "+ cmpFields; // NOI18N
}
public FileObject getRootFolder() {
return rootFolder;
}
public String getPackage() {
return packageName;
}
public String getCatalogName() {
return catalogName;
}
public String getSchemaName() {
return schemaName;
}
public String getTableName() {
return tableName;
}
public String getClassName() {
return className;
}
public UpdateType getUpdateType() {
return updateType;
}
public FileObject getPackageFileObject() {
String relative = packageName.replace('.', '/');
return rootFolder.getFileObject(relative);
}
public CMPMappingModel getCMPMapping() {
mappingModel.getCMPFieldMapping().clear();
for (EntityMember entityMember : getFields()) {
mappingModel.setTableName(entityMember.getTableName());
mappingModel.getCMPFieldMapping().put(entityMember.getMemberName(), entityMember.getColumnName());
}
return mappingModel;
}
public void usePkField(boolean usePkField) {
this.usePkField = usePkField;
}
public boolean isUsePkField() {
return usePkField;
}
public String getPkFieldName() {
return pkFieldName;
}
public void setPkFieldName(String pkFieldName) {
this.pkFieldName = pkFieldName;
}
/**
* @return the derivedIdCandidate
*/
public boolean isDerivedIdCandidate() {
return derivedIdCandidate;
}
/**
* @param derivedIdCandidate the derivedIdCandidate to set
*/
public void setDerivedIdCandidate(boolean derivedIdCandidate) {
this.derivedIdCandidate = derivedIdCandidate;
}
}