package org.springframework.roo.classpath.details;
import java.lang.reflect.Modifier;
import org.springframework.roo.classpath.itd.InvocableMemberBodyBuilder;
/**
* Builder for {@link InitializerMetadata}.
*
* @author Ben Alex
* @since 1.1.1
*/
public class InitializerMetadataBuilder extends
AbstractIdentifiableJavaStructureBuilder<InitializerMetadata> {
private InvocableMemberBodyBuilder bodyBuilder = new InvocableMemberBodyBuilder();
private boolean isStatic;
public InitializerMetadataBuilder(final InitializerMetadata existing) {
super(existing);
isStatic = existing.getModifier() == Modifier.STATIC || existing.isStatic();
bodyBuilder.append(existing.getBody());
}
public InitializerMetadataBuilder(final String declaredbyMetadataId) {
super(declaredbyMetadataId);
}
public InitializerMetadataBuilder(final String declaredbyMetadataId, final int modifier,
boolean isStatic, final InvocableMemberBodyBuilder bodyBuilder) {
this(declaredbyMetadataId);
setModifier(modifier);
if (modifier == Modifier.STATIC) {
isStatic = true;
}
this.isStatic = isStatic;
this.bodyBuilder = bodyBuilder;
}
public InitializerMetadata build() {
return new DefaultInitializerMetadata(getCustomData().build(), getDeclaredByMetadataId(),
getModifier(), isStatic, getBodyBuilder().getOutput());
}
public String getBody() {
if (bodyBuilder != null) {
return bodyBuilder.getOutput();
}
return null;
}
public InvocableMemberBodyBuilder getBodyBuilder() {
return bodyBuilder;
}
public boolean isStatic() {
return isStatic;
}
public void setBodyBuilder(final InvocableMemberBodyBuilder bodyBuilder) {
this.bodyBuilder = bodyBuilder;
}
public void setStatic(final boolean isStatic) {
this.isStatic = isStatic;
}
}