use of org.mybatis.generator.eclipse.core.callback.EclipseShellCallback in project generator by mybatis.
the class GeneratorAntTask method execute.
/*
* (non-Javadoc)
*
* @see org.apache.tools.ant.Task#execute()
*/
@Override
public void execute() throws BuildException {
if (!StringUtility.stringHasValue(configfile)) {
throw new BuildException("configfile is a required parameter");
}
List<String> warnings = new ArrayList<String>();
File configurationFile = new File(configfile);
if (!configurationFile.exists()) {
throw new BuildException("configfile " + configfile + " does not exist");
}
Set<String> fullyqualifiedTables = new HashSet<String>();
if (StringUtility.stringHasValue(fullyQualifiedTableNames)) {
//$NON-NLS-1$
StringTokenizer st = new StringTokenizer(fullyQualifiedTableNames, ",");
while (st.hasMoreTokens()) {
String s = st.nextToken().trim();
if (s.length() > 0) {
fullyqualifiedTables.add(s);
}
}
}
Set<String> contexts = new HashSet<String>();
if (StringUtility.stringHasValue(contextIds)) {
//$NON-NLS-1$
StringTokenizer st = new StringTokenizer(contextIds, ",");
while (st.hasMoreTokens()) {
String s = st.nextToken().trim();
if (s.length() > 0) {
contexts.add(s);
}
}
}
IProgressMonitor monitor = (IProgressMonitor) getProject().getReferences().get(AntCorePlugin.ECLIPSE_PROGRESS_MONITOR);
if (monitor == null) {
monitor = new NullProgressMonitor();
}
try {
SubMonitor subMonitor = SubMonitor.convert(monitor, 1000);
subMonitor.beginTask("Generating MyBatis/iBATIS Artifacts:", 1000);
subMonitor.subTask("Parsing Configuration");
Properties p = propertyset == null ? null : propertyset.getProperties();
ConfigurationParser cp = new ConfigurationParser(p, warnings);
Configuration config = cp.parseConfiguration(configurationFile);
subMonitor.worked(50);
monitor.subTask("Generating Files from Database Tables");
MyBatisGenerator generator = new MyBatisGenerator(config, new EclipseShellCallback(), warnings);
EclipseProgressCallback progressCallback = new EclipseProgressCallback(subMonitor.newChild(950));
generator.generate(progressCallback, contexts, fullyqualifiedTables);
} catch (XMLParserException e) {
for (String error : e.getErrors()) {
log(error, Project.MSG_ERR);
}
throw new BuildException(e.getMessage());
} catch (SQLException e) {
throw new BuildException(e.getMessage());
} catch (IOException e) {
throw new BuildException(e.getMessage());
} catch (InvalidConfigurationException e) {
throw new BuildException(e.getMessage());
} catch (InterruptedException e) {
throw new BuildException("Cancelled by user");
} finally {
monitor.done();
}
for (String warning : warnings) {
log("WARNING: " + warning, Project.MSG_WARN);
}
}
use of org.mybatis.generator.eclipse.core.callback.EclipseShellCallback in project generator by mybatis.
the class RunGeneratorThread method run.
/*
* (non-Javadoc)
*
* @see org.eclipse.core.resources.IWorkspaceRunnable#run(org.eclipse.core.runtime.IProgressMonitor)
*/
public void run(IProgressMonitor monitor) throws CoreException {
SubMonitor subMonitor = SubMonitor.convert(monitor, 1000);
subMonitor.beginTask("Generating MyBatis/iBATIS Artifacts:", 1000);
setClassLoader();
try {
subMonitor.subTask("Parsing Configuration");
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(inputFile.getLocation().toFile());
subMonitor.worked(50);
MyBatisGenerator mybatisGenerator = new MyBatisGenerator(config, new EclipseShellCallback(), warnings);
monitor.subTask("Generating Files from Database Tables");
SubMonitor spm = subMonitor.newChild(950);
mybatisGenerator.generate(new EclipseProgressCallback(spm));
} catch (InterruptedException e) {
throw new OperationCanceledException();
} catch (SQLException e) {
Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
Activator.getDefault().getLog().log(status);
throw new CoreException(status);
} catch (IOException e) {
Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, e.getMessage(), e);
Activator.getDefault().getLog().log(status);
throw new CoreException(status);
} catch (XMLParserException e) {
List<String> errors = e.getErrors();
MultiStatus multiStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR, "XML Parser Errors\n See Details for more Information", null);
Iterator<String> iter = errors.iterator();
while (iter.hasNext()) {
Status message = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, iter.next(), null);
multiStatus.add(message);
}
throw new CoreException(multiStatus);
} catch (InvalidConfigurationException e) {
List<String> errors = e.getErrors();
MultiStatus multiStatus = new MultiStatus(Activator.PLUGIN_ID, IStatus.ERROR, "Invalid Configuration\n See Details for more Information", null);
Iterator<String> iter = errors.iterator();
while (iter.hasNext()) {
Status message = new Status(IStatus.ERROR, Activator.PLUGIN_ID, IStatus.ERROR, iter.next(), null);
multiStatus.add(message);
}
throw new CoreException(multiStatus);
} finally {
monitor.done();
restoreClassLoader();
}
}
use of org.mybatis.generator.eclipse.core.callback.EclipseShellCallback in project generator by mybatis.
the class EclipseShellCallbackTest method testCalculatingDirectoryOnDefaultSourceFolder.
@Test
public void testCalculatingDirectoryOnDefaultSourceFolder() throws ShellException {
EclipseShellCallback callback = new EclipseShellCallback();
File directory = callback.getDirectory(javaProject.getElementName(), "org.mybatis.test");
assertThat(directory, is(notNullValue()));
assertThat(directory.exists(), is(true));
IPath actualPath = new Path(directory.getAbsolutePath());
IPath workspacePath = getWorkspace().getRoot().getLocation();
IPath expectedPath = workspacePath.append(javaProject.getElementName()).append("src").append("main").append("java").append("org").append("mybatis").append("test");
assertThat(expectedPath, is(equalTo(actualPath)));
}
use of org.mybatis.generator.eclipse.core.callback.EclipseShellCallback in project generator by mybatis.
the class EclipseShellCallbackTest method testCalculatingDirectoryOnNonExistingSourceFolder.
@Test(expected = ShellException.class)
public void testCalculatingDirectoryOnNonExistingSourceFolder() throws ShellException {
EclipseShellCallback callback = new EclipseShellCallback();
callback.getDirectory(javaProject.getElementName() + "/othersrc", "org.mybatis.test");
}
use of org.mybatis.generator.eclipse.core.callback.EclipseShellCallback in project generator by mybatis.
the class EclipseShellCallbackTest method testCalculatingDirectoryOnSpecificSourceFolder.
@Test
public void testCalculatingDirectoryOnSpecificSourceFolder() throws ShellException {
EclipseShellCallback callback = new EclipseShellCallback();
File directory = callback.getDirectory(javaProject.getElementName() + "/generatedsrc", "org.mybatis.test");
assertThat(directory, is(notNullValue()));
assertThat(directory.exists(), is(true));
IPath actualPath = new Path(directory.getAbsolutePath());
IPath workspacePath = getWorkspace().getRoot().getLocation();
IPath expectedPath = workspacePath.append(javaProject.getElementName()).append("generatedsrc").append("org").append("mybatis").append("test");
assertThat(expectedPath, is(equalTo(actualPath)));
}
Aggregations