Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 181816
Collapse All | Expand All

(-)src/org/eclipse/jpt/ui/internal/generic/EntitiesGenerator.java (-7 / +1 lines)
Lines 9-15 Link Here
9
*******************************************************************************/
9
*******************************************************************************/
10
package org.eclipse.jpt.ui.internal.generic;
10
package org.eclipse.jpt.ui.internal.generic;
11
11
12
import java.lang.reflect.InvocationTargetException;
13
import java.util.Collection;
12
import java.util.Collection;
14
import org.eclipse.core.resources.ResourcesPlugin;
13
import org.eclipse.core.resources.ResourcesPlugin;
15
import org.eclipse.core.resources.WorkspaceJob;
14
import org.eclipse.core.resources.WorkspaceJob;
Lines 18-27 Link Here
18
import org.eclipse.core.runtime.IStatus;
17
import org.eclipse.core.runtime.IStatus;
19
import org.eclipse.core.runtime.OperationCanceledException;
18
import org.eclipse.core.runtime.OperationCanceledException;
20
import org.eclipse.core.runtime.Status;
19
import org.eclipse.core.runtime.Status;
21
import org.eclipse.core.runtime.jobs.Job;
22
import org.eclipse.jface.dialogs.Dialog;
20
import org.eclipse.jface.dialogs.Dialog;
23
import org.eclipse.jface.dialogs.IDialogConstants;
21
import org.eclipse.jface.dialogs.IDialogConstants;
24
import org.eclipse.jface.operation.IRunnableWithProgress;
25
import org.eclipse.jface.viewers.IStructuredSelection;
22
import org.eclipse.jface.viewers.IStructuredSelection;
26
import org.eclipse.jface.window.Window;
23
import org.eclipse.jface.window.Window;
27
import org.eclipse.jface.wizard.WizardDialog;
24
import org.eclipse.jface.wizard.WizardDialog;
Lines 41-49 Link Here
41
import org.eclipse.swt.widgets.Display;
38
import org.eclipse.swt.widgets.Display;
42
import org.eclipse.swt.widgets.Label;
39
import org.eclipse.swt.widgets.Label;
43
import org.eclipse.swt.widgets.Shell;
40
import org.eclipse.swt.widgets.Shell;
44
import org.eclipse.ui.PlatformUI;
45
import org.eclipse.ui.actions.WorkspaceModifyOperation;
46
import org.eclipse.ui.progress.IProgressService;
47
41
48
/**
42
/**
49
 *  EntitiesGenerator
43
 *  EntitiesGenerator
Lines 116-122 Link Here
116
				IJpaProject project,
110
				IJpaProject project,
117
				EntityGenerator.OverwriteConfirmer overwriteConfirmer
111
				EntityGenerator.OverwriteConfirmer overwriteConfirmer
118
		) {
112
		) {
119
			super("Generating Entities");
113
			super(JptUiMessages.EntitiesGenerator_jobName);
120
			this.packageConfig = packageConfig;
114
			this.packageConfig = packageConfig;
121
			this.entityConfig = entityConfig;
115
			this.entityConfig = entityConfig;
122
			this.selectedTables = selectedTables;
116
			this.selectedTables = selectedTables;
(-)property_files/jpt_ui.properties (+2 lines)
Lines 77-79 Link Here
77
77
78
OverwriteConfirmerDialog_title=Overwrite Existing Class
78
OverwriteConfirmerDialog_title=Overwrite Existing Class
79
OverwriteConfirmerDialog_text=Overwrite source code for the class ''{0}''?
79
OverwriteConfirmerDialog_text=Overwrite source code for the class ''{0}''?
80
81
EntitiesGenerator_jobName=Generating Entities
(-)src/org/eclipse/jpt/ui/internal/JptUiMessages.java (+1 lines)
Lines 144-149 Link Here
144
144
145
	public static String OverwriteConfirmerDialog_text;
145
	public static String OverwriteConfirmerDialog_text;
146
146
147
	public static String EntitiesGenerator_jobName;
147
	
148
	
148
	private JptUiMessages() {
149
	private JptUiMessages() {
149
		throw new UnsupportedOperationException();
150
		throw new UnsupportedOperationException();
(-)src/org/eclipse/jpt/gen/internal/GenScope.java (-12 / +18 lines)
Lines 41-54 Link Here
41
	
41
	
42
	private void initialize(Collection<Table> tables, EntityGenerator.Config entityConfig, IProgressMonitor monitor) {
42
	private void initialize(Collection<Table> tables, EntityGenerator.Config entityConfig, IProgressMonitor monitor) {
43
		this.progressMonitor = monitor;
43
		this.progressMonitor = monitor;
44
		this.buildGenTables(tables, entityConfig);
44
		try {
45
		checkCanceled();
45
			this.progressMonitor.beginTask("", 1000);
46
		this.configureManyToManyRelations();
46
			this.buildGenTables(tables, entityConfig);
47
		checkCanceled();
47
			checkCanceled();
48
		this.configureManyToOneRelations();
48
			this.configureManyToManyRelations();
49
		checkCanceled();
49
			checkCanceled();
50
		this.configureFieldNames();
50
			this.configureManyToOneRelations();
51
		checkCanceled();
51
			checkCanceled();
52
			this.configureFieldNames();
53
			checkCanceled();
54
		}
55
		finally {
56
			this.progressMonitor.done();
57
		}
52
	}
58
	}
53
59
54
	private void buildGenTables(Collection<Table> tables, EntityGenerator.Config entityConfig) {
60
	private void buildGenTables(Collection<Table> tables, EntityGenerator.Config entityConfig) {
Lines 57-63 Link Here
57
		Set<String> entityNames = new HashSet<String>(size);
63
		Set<String> entityNames = new HashSet<String>(size);
58
		for (Table table : tables) {
64
		for (Table table : tables) {
59
			this.buildGenTable(table, entityConfig, entityNames);
65
			this.buildGenTable(table, entityConfig, entityNames);
60
			this.progressMonitor.worked(40/size);
66
			this.progressMonitor.worked(50/size);
61
		}
67
		}
62
	}
68
	}
63
69
Lines 75-81 Link Here
75
		for (Iterator<GenTable> stream = this.tables(); stream.hasNext(); ) {
81
		for (Iterator<GenTable> stream = this.tables(); stream.hasNext(); ) {
76
			checkCanceled();
82
			checkCanceled();
77
			stream.next().configureManyToManyRelations();
83
			stream.next().configureManyToManyRelations();
78
			this.progressMonitor.worked(730/tablesSize);
84
			this.progressMonitor.worked(750/tablesSize);
79
		}
85
		}
80
		// revert any "join" table that is referenced by another table back to an "entity" table
86
		// revert any "join" table that is referenced by another table back to an "entity" table
81
		Set<GenTable> referencedTables = this.buildReferencedTables();
87
		Set<GenTable> referencedTables = this.buildReferencedTables();
Lines 85-91 Link Here
85
			if (referencedTables.contains(joinGenTable)) {
91
			if (referencedTables.contains(joinGenTable)) {
86
				joinGenTable.clearJoinTableRelation();
92
				joinGenTable.clearJoinTableRelation();
87
			}
93
			}
88
			this.progressMonitor.worked(40/tablesSize);
94
			this.progressMonitor.worked(50/tablesSize);
89
		}
95
		}
90
	}
96
	}
91
97
Lines 167-173 Link Here
167
		Set<GenTable> referencedTables = new HashSet<GenTable>(this.genTables.size());
173
		Set<GenTable> referencedTables = new HashSet<GenTable>(this.genTables.size());
168
		for (Iterator<GenTable> stream = this.tables(); stream.hasNext(); ) {
174
		for (Iterator<GenTable> stream = this.tables(); stream.hasNext(); ) {
169
			stream.next().addReferencedTablesTo(referencedTables);
175
			stream.next().addReferencedTablesTo(referencedTables);
170
			this.progressMonitor.worked(20/size);
176
			this.progressMonitor.worked(50/size);
171
		}
177
		}
172
		return referencedTables;
178
		return referencedTables;
173
	}
179
	}
(-)src/org/eclipse/jpt/gen/internal/EntityGenerator.java (-2 / +10 lines)
Lines 21-26 Link Here
21
import java.util.Set;
21
import java.util.Set;
22
import java.util.TreeSet;
22
import java.util.TreeSet;
23
import org.eclipse.core.runtime.IProgressMonitor;
23
import org.eclipse.core.runtime.IProgressMonitor;
24
import org.eclipse.core.runtime.SubProgressMonitor;
24
import org.eclipse.jdt.core.IJavaModelStatusConstants;
25
import org.eclipse.jdt.core.IJavaModelStatusConstants;
25
import org.eclipse.jdt.core.IPackageFragment;
26
import org.eclipse.jdt.core.IPackageFragment;
26
import org.eclipse.jdt.core.JavaModelException;
27
import org.eclipse.jdt.core.JavaModelException;
Lines 79-89 Link Here
79
	// ********** code gen **********
80
	// ********** code gen **********
80
81
81
	private void generateEntity() {
82
	private void generateEntity() {
83
		int totalWork = pkClassIsGenerated() ? 40 : 20;
82
		try {
84
		try {
85
			this.monitor.beginTask("", totalWork);
83
			this.generateEntity_();
86
			this.generateEntity_();
84
		} catch (JavaModelException ex) {
87
		} catch (JavaModelException ex) {
85
			throw new RuntimeException(ex);
88
			throw new RuntimeException(ex);
86
		}
89
		}
90
		finally {
91
			this.monitor.done();
92
		}
87
	}
93
	}
88
94
89
	private void generateEntity_() throws JavaModelException {
95
	private void generateEntity_() throws JavaModelException {
Lines 92-106 Link Here
92
		if (this.pkClassIsGenerated()) {
98
		if (this.pkClassIsGenerated()) {
93
			this.generateSourceFile(this.pkClassName, this.pkName() + ".java", this.buildSource(this.buildPKBodySource()));
99
			this.generateSourceFile(this.pkClassName, this.pkName() + ".java", this.buildSource(this.buildPKBodySource()));
94
		}
100
		}
101
		
95
	}
102
	}
96
103
97
	private void generateSourceFile(String className, String fileName, String source) throws JavaModelException {
104
	private void generateSourceFile(String className, String fileName, String source) throws JavaModelException {
98
		try {
105
		try {
99
			this.packageFragment.createCompilationUnit(fileName, source, false, this.monitor);
106
			this.packageFragment.createCompilationUnit(fileName, source, false, new SubProgressMonitor(this.monitor, 10));
100
		} catch (JavaModelException ex) {
107
		} catch (JavaModelException ex) {
101
			if (ex.getJavaModelStatus().getCode() == IJavaModelStatusConstants.NAME_COLLISION) {
108
			if (ex.getJavaModelStatus().getCode() == IJavaModelStatusConstants.NAME_COLLISION) {
102
				if (this.overwriteConfirmer.overwrite(className)) {
109
				if (this.overwriteConfirmer.overwrite(className)) {
103
					this.packageFragment.createCompilationUnit(fileName, source, true, this.monitor);
110
					this.packageFragment.createCompilationUnit(fileName, source, true, new SubProgressMonitor(this.monitor, 0));
104
				}
111
				}
105
			} else {
112
			} else {
106
				throw ex;
113
				throw ex;
Lines 117-122 Link Here
117
		PrintWriter pw = new PrintWriter(sw);
124
		PrintWriter pw = new PrintWriter(sw);
118
		this.printPackageAndImportsOn(pw, bodySource);
125
		this.printPackageAndImportsOn(pw, bodySource);
119
		pw.print(bodySource.source());
126
		pw.print(bodySource.source());
127
		this.monitor.worked(10);
120
		return sw.toString();
128
		return sw.toString();
121
	}
129
	}
122
130
(-)src/org/eclipse/jpt/gen/internal/PackageGenerator.java (-8 / +14 lines)
Lines 13-18 Link Here
13
import java.util.Iterator;
13
import java.util.Iterator;
14
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.core.runtime.IProgressMonitor;
15
import org.eclipse.core.runtime.OperationCanceledException;
15
import org.eclipse.core.runtime.OperationCanceledException;
16
import org.eclipse.core.runtime.SubProgressMonitor;
16
import org.eclipse.jdt.core.IPackageFragment;
17
import org.eclipse.jdt.core.IPackageFragment;
17
import org.eclipse.jpt.db.internal.Table;
18
import org.eclipse.jpt.db.internal.Table;
18
import org.eclipse.jpt.gen.internal.EntityGenerator.OverwriteConfirmer;
19
import org.eclipse.jpt.gen.internal.EntityGenerator.OverwriteConfirmer;
Lines 28-41 Link Here
28
	private final OverwriteConfirmer overwriteConfirmer;
29
	private final OverwriteConfirmer overwriteConfirmer;
29
	private final IProgressMonitor monitor;
30
	private final IProgressMonitor monitor;
30
31
31
32
	// ********** public API **********
32
	// ********** public API **********
33
33
34
	public static void generateEntities(Config config, EntityGenerator.Config entityConfig, Collection<Table> tables, OverwriteConfirmer overwriteConfirmer, IProgressMonitor monitor) {
34
	public static void generateEntities(Config config, EntityGenerator.Config entityConfig, Collection<Table> tables, OverwriteConfirmer overwriteConfirmer, IProgressMonitor monitor) {
35
		if ((config == null) || (entityConfig == null) || (tables == null)) {
35
		if ((config == null) || (entityConfig == null) || (tables == null)) {
36
			throw new NullPointerException();
36
			throw new NullPointerException();
37
		}
37
		}
38
		new PackageGenerator(config, entityConfig, tables, overwriteConfirmer, monitor).generateEntities();
38
		try {
39
			monitor.beginTask("", 1000);
40
			new PackageGenerator(config, entityConfig, tables, overwriteConfirmer, monitor).generateEntities();
41
		}
42
		finally {
43
			monitor.done();
44
		}
39
	}
45
	}
40
46
41
47
Lines 45-51 Link Here
45
		super();
51
		super();
46
		this.config = config;
52
		this.config = config;
47
		this.entityConfig = entityConfig;
53
		this.entityConfig = entityConfig;
48
		this.scope = new GenScope(tables, entityConfig, monitor);
54
		this.scope = new GenScope(tables, entityConfig, new SubProgressMonitor(monitor, 800));
49
		this.overwriteConfirmer = overwriteConfirmer;
55
		this.overwriteConfirmer = overwriteConfirmer;
50
		this.monitor = monitor;
56
		this.monitor = monitor;
51
	}
57
	}
Lines 54-64 Link Here
54
	// ********** generation **********
60
	// ********** generation **********
55
61
56
	private void generateEntities() {
62
	private void generateEntities() {
57
		int size = CollectionTools.size(this.scope.entityTables());
63
		int size = this.scope.numEntityTables();
64
		int ticks = 200/size;
58
		for (Iterator<GenTable> stream = this.scope.entityTables(); stream.hasNext(); ) {
65
		for (Iterator<GenTable> stream = this.scope.entityTables(); stream.hasNext(); ) {
59
			checkCanceled();
66
			checkCanceled();
60
			this.buildEntity(stream.next());
67
			this.buildEntity(stream.next(), new SubProgressMonitor(this.monitor, ticks));
61
			this.monitor.worked(50/size);
62
		}
68
		}
63
	}
69
	}
64
70
Lines 69-76 Link Here
69
	}
75
	}
70
	
76
	
71
77
72
	private void buildEntity(GenTable genTable) {
78
	private void buildEntity(GenTable genTable, IProgressMonitor monitor) {
73
		EntityGenerator.generateEntity(this.entityConfig, this.config.getPackageFragment(), genTable, overwriteConfirmer, this.monitor);
79
		EntityGenerator.generateEntity(this.entityConfig, this.config.getPackageFragment(), genTable, overwriteConfirmer, monitor);
74
	}
80
	}
75
81
76
82

Return to bug 181816