blob: c868c655487312fbfa25c32fcf38e10e3619cbff [file] [log] [blame]
/*
* Copyright (c) 1998, 2020 Oracle and/or its affiliates. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0,
* or the Eclipse Distribution License v. 1.0 which is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* SPDX-License-Identifier: EPL-2.0 OR BSD-3-Clause
*/
// Contributors:
// Oracle - initial API and implementation from Oracle TopLink
package org.eclipse.persistence.sdo.helper;
import org.eclipse.persistence.sdo.SDOType;
/**
* <p><b>Purpose</b>: This class maintains information about a generated class and its corresponding interface
* <p><b>Responsibilities</b>:<ul>
* <li> Hold the StringBuffer contents of the class and interface
* <li> When the close() method is called the attribute and method buffers are appended to the classbuffer
* and both the interface buffer and class buffer have the closing brace appended
* </ul>
*/
public class ClassBuffer {
private static final String lsep = System.getProperty("line.separator");
private static final String lsep2 = lsep + lsep;
private String indent = "";
private StringBuffer attributeBuffer;
private StringBuffer methodBuffer;
private StringBuffer classBuffer;
private StringBuffer interfaceBuffer;
private String interfaceName;//the generated interface name if applicable
private String className;//the name of the generated class
private String packageName;//the java package of the generated class and interface
private String uri;//the uri the sdo type corresponding to this class
private String sdoTypeName;//the sdo type name corresponding to this class
private boolean closed;
private boolean generateInterface;
private SDOType sdoType;
private SDOClassGeneratorListener sdoClassGeneratorListener;
public ClassBuffer(SDOClassGeneratorListener sdoClassGeneratorListener) {
setAttributeBuffer(new StringBuffer());
setMethodBuffer(new StringBuffer());
setClassBuffer(new StringBuffer());
setInterfaceBuffer(new StringBuffer());
this.sdoClassGeneratorListener = sdoClassGeneratorListener;
}
public void setAttributeBuffer(StringBuffer attributeBuffer) {
this.attributeBuffer = attributeBuffer;
}
public StringBuffer getAttributeBuffer() {
return attributeBuffer;
}
public void setMethodBuffer(StringBuffer methodBuffer) {
this.methodBuffer = methodBuffer;
}
public StringBuffer getMethodBuffer() {
return methodBuffer;
}
public void setClassBuffer(StringBuffer classBuffer) {
this.classBuffer = classBuffer;
}
public StringBuffer getClassBuffer() {
return classBuffer;
}
public void setInterfaceBuffer(StringBuffer interfaceBuffer) {
this.interfaceBuffer = interfaceBuffer;
}
public StringBuffer getInterfaceBuffer() {
return interfaceBuffer;
}
public void close() {
if (!closed) {
if (sdoClassGeneratorListener != null) {
sdoClassGeneratorListener.preImplAttributes(classBuffer);
}
classBuffer.append(attributeBuffer);
classBuffer.append(methodBuffer);
classBuffer.append(lsep).append(this.indent).append("}").append(lsep2);
closed = true;
if (isGenerateInterface()) {
interfaceBuffer.append(lsep).append(this.indent).append("}").append(lsep2);
}
}
}
public void setGenerateInterface(boolean generateInterface) {
this.generateInterface = generateInterface;
}
public boolean isGenerateInterface() {
return generateInterface;
}
public void setInterfaceName(String interfaceName) {
this.interfaceName = interfaceName;
}
public String getInterfaceName() {
return interfaceName;
}
public void setClassName(String className) {
this.className = className;
}
public String getClassName() {
return className;
}
public void setPackageName(String packageName) {
this.packageName = packageName;
}
public String getPackageName() {
return packageName;
}
public void setUri(String uri) {
this.uri = uri;
}
public String getUri() {
return uri;
}
public void setSdoTypeName(String sdoTypeName) {
this.sdoTypeName = sdoTypeName;
}
public String getSdoTypeName() {
return sdoTypeName;
}
public void setSdoType(SDOType sdoType) {
this.sdoType = sdoType;
}
public SDOType getSdoType() {
return sdoType;
}
}