Skip to content

Commit

Permalink
Merge pull request #3 from ZeroOne3010/BuilderGenerator-builder
Browse files Browse the repository at this point in the history
Builder generator builder
  • Loading branch information
henningjensen committed Mar 23, 2013
2 parents 52a4fd5 + 421d77b commit c376882
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 64 deletions.
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package no.bekk.boss.bpep.generator;

import static no.bekk.boss.bpep.resolver.Resolver.getName;
import static no.bekk.boss.bpep.resolver.Resolver.getType;

import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.List;

import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.IBuffer;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
Expand All @@ -16,7 +17,6 @@
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.NamingConventions;
import org.eclipse.jdt.core.Signature;
import org.eclipse.jdt.core.ToolFactory;
import org.eclipse.jdt.core.formatter.CodeFormatter;
import org.eclipse.jface.text.BadLocationException;
Expand All @@ -28,13 +28,11 @@ public class BuilderGenerator implements Generator {

private static final String BUILDER_METHOD_PARAMETER_SUFFIX = "Param";

private final IJavaProject javaProject;

public BuilderGenerator() {
javaProject = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot().getProject());
}
private final boolean createBuilderConstructor;
private final boolean createCopyConstructor;
private final boolean formatSource;

public void generate(ICompilationUnit cu, boolean createBuilderConstructor, boolean createCopyConstructor, boolean formatSource, List<IField> fields) {
public void generate(ICompilationUnit cu, List<IField> fields) {

try {
removeOldClassConstructor(cu);
Expand Down Expand Up @@ -160,6 +158,7 @@ private void createBuilderMethods(PrintWriter pw, List<IField> fields) throws Ja
}

private String getFieldBaseName(String fieldName) {
IJavaProject javaProject = JavaCore.create(ResourcesPlugin.getWorkspace().getRoot().getProject());
return NamingConventions.getBaseName(NamingConventions.VK_INSTANCE_FIELD, fieldName, javaProject);
}

Expand All @@ -169,38 +168,34 @@ private void createFieldDeclarations(PrintWriter pw, List<IField> fields) throws
}
}

public String getName(IField field) {
return field.getElementName();
}
public static class Builder {
boolean createBuilderConstructor;
boolean createCopyConstructor;
boolean formatSource;

public String getType(IField field) {
try {
return Signature.toString(field.getTypeSignature());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (JavaModelException e) {
e.printStackTrace();
public Builder createBuilderConstructor(boolean createBuilderConstructorParam) {
this.createBuilderConstructor = createBuilderConstructorParam;
return this;
}
return null;
}

public List<IField> findAllFields(ICompilationUnit compilationUnit) {
List<IField> fields = new ArrayList<IField>();
try {
IType clazz = compilationUnit.getTypes()[0];

for(IField field: clazz.getFields()) {
int flags = field.getFlags();
boolean notStatic = !Flags.isStatic(flags);
if (notStatic) {
fields.add(field);
}
}
public Builder createCopyConstructor(boolean createCopyConstructorParam) {
this.createCopyConstructor = createCopyConstructorParam;
return this;
}

} catch (JavaModelException e) {
e.printStackTrace();
public Builder formatSource(boolean formatSourceParam) {
this.formatSource = formatSourceParam;
return this;
}

public BuilderGenerator build() {
return new BuilderGenerator(this);
}
return fields;
}

BuilderGenerator(Builder builder) {
this.createBuilderConstructor = builder.createBuilderConstructor;
this.createCopyConstructor = builder.createCopyConstructor;
this.formatSource = builder.formatSource;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,5 @@
import org.eclipse.jdt.core.IField;

public interface Generator {
void generate(ICompilationUnit compilationUnit, boolean createBuilderConstructor, boolean createCopyConstructor, boolean formatSource, List<IField> selectedFields);
List<IField> findAllFields(ICompilationUnit compilationUnit);
String getName(IField field);
String getType(IField field);
void generate(ICompilationUnit compilationUnit, List<IField> selectedFields);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package no.bekk.boss.bpep.generator;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.core.ICompilationUnit;
Expand All @@ -9,25 +8,12 @@

public class MockGenerator implements Generator {

public void generate(ICompilationUnit compilationUnit, boolean createPrivateConstructor, boolean createCopyConstructor, boolean formatSource, List<IField> selectedFields) {
public void generate(ICompilationUnit compilationUnit, List<IField> selectedFields) {
try {
System.out.println(compilationUnit.getSource());
} catch (JavaModelException e) {
e.printStackTrace();
}

}

public List<IField> findAllFields(ICompilationUnit compilationUnit) {
return new ArrayList<IField>();
}

public String getName(IField field) {
return null;
}

public String getType(IField field) {
return null;
}

}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package no.bekk.boss.bpep.popup.actions;

import no.bekk.boss.bpep.generator.BuilderGenerator;
import no.bekk.boss.bpep.view.CreateDialog;

import org.eclipse.core.runtime.CoreException;
Expand Down Expand Up @@ -33,7 +32,7 @@ public void run(IAction action) {
manager.connect(editorInput);
ICompilationUnit workingCopy = manager.getWorkingCopy(editorInput);

CreateDialog dialog = new CreateDialog(new Shell(), new BuilderGenerator());
CreateDialog dialog = new CreateDialog(new Shell());
dialog.show(workingCopy);

synchronized (workingCopy) {
Expand Down
47 changes: 47 additions & 0 deletions plugin/src/main/java/no/bekk/boss/bpep/resolver/Resolver.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package no.bekk.boss.bpep.resolver;

import java.util.ArrayList;
import java.util.List;

import org.eclipse.jdt.core.Flags;
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.core.Signature;

public class Resolver {
public static String getName(final IField field) {
return field.getElementName();
}

public static String getType(final IField field) {
try {
return Signature.toString(field.getTypeSignature());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (JavaModelException e) {
e.printStackTrace();
}
return null;
}

public static List<IField> findAllFields(final ICompilationUnit compilationUnit) {
List<IField> fields = new ArrayList<IField>();
try {
IType clazz = compilationUnit.getTypes()[0];

for (IField field : clazz.getFields()) {
int flags = field.getFlags();
boolean notStatic = !Flags.isStatic(flags);
if (notStatic) {
fields.add(field);
}
}

} catch (JavaModelException e) {
e.printStackTrace();
}
return fields;
}
}
18 changes: 11 additions & 7 deletions plugin/src/main/java/no/bekk/boss/bpep/view/CreateDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@
import java.util.ArrayList;
import java.util.List;

import no.bekk.boss.bpep.generator.BuilderGenerator;
import no.bekk.boss.bpep.generator.Generator;
import no.bekk.boss.bpep.resolver.Resolver;

import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IField;
Expand All @@ -22,11 +24,8 @@

public class CreateDialog extends AbstractModalDialog {

private Generator generator;

public CreateDialog(Shell parent, Generator generator) {
public CreateDialog(Shell parent) {
super(parent);
this.generator = generator;
}

public void show(final ICompilationUnit compilationUnit) throws JavaModelException {
Expand Down Expand Up @@ -86,7 +85,12 @@ public void handleEvent(Event event) {
}
}

generator.generate(compilationUnit, createBuilderConstructor.getSelection(), createCopyConstructorButton.getSelection(), formatSourceButton.getSelection(), selectedFields);
Generator generator = new BuilderGenerator.Builder() //
.createBuilderConstructor(createBuilderConstructor.getSelection()) //
.createCopyConstructor(createCopyConstructorButton.getSelection()) //
.formatSource(formatSourceButton.getSelection()) //
.build();
generator.generate(compilationUnit, selectedFields);
shell.dispose();
} else {
shell.dispose();
Expand All @@ -103,11 +107,11 @@ public void handleEvent(Event event) {
}

private List<Button> createFieldSelectionCheckboxes(final ICompilationUnit compilationUnit, Group fieldGroup) {
List<IField> fields = generator.findAllFields(compilationUnit);
List<IField> fields = Resolver.findAllFields(compilationUnit);
final List<Button> fieldButtons = new ArrayList<Button>();
for (IField field : fields) {
Button button = new Button(fieldGroup, SWT.CHECK);
button.setText(generator.getName(field) + "(" + generator.getType(field) + ")");
button.setText(Resolver.getName(field) + "(" + Resolver.getType(field) + ")");
button.setData(field);
button.setSelection(true);
fieldButtons.add(button);
Expand Down

0 comments on commit c376882

Please sign in to comment.