// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.repository.ui.wizards.sqlpattern;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import org.eclipse.core.runtime.IPath;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.wizard.Wizard;
import org.talend.commons.exception.PersistenceException;
import org.talend.commons.ui.runtime.exception.ExceptionHandler;
import org.talend.commons.ui.runtime.exception.RuntimeExceptionHandler;
import org.talend.commons.ui.runtime.image.ECoreImage;
import org.talend.commons.ui.runtime.image.ImageProvider;
import org.talend.commons.utils.VersionUtils;
import org.talend.core.CorePlugin;
import org.talend.core.context.Context;
import org.talend.core.context.RepositoryContext;
import org.talend.core.model.general.ILibrariesService;
import org.talend.core.model.properties.ByteArray;
import org.talend.core.model.properties.PropertiesFactory;
import org.talend.core.model.properties.Property;
import org.talend.core.model.properties.SQLPatternItem;
import org.talend.core.repository.model.ProxyRepositoryFactory;
import org.talend.repository.i18n.Messages;
import org.talend.repository.model.IProxyRepositoryFactory;
/**
* Wizard for the creation of a new project. <br/>
*
* $Id: NewProcessWizard.java 914 2006-12-08 08:28:53 +0000 (ven., 08 déc. 2006) bqian $
*
*/
public class NewSqlpatternWizard extends Wizard {
/** Main page. */
private NewSqlpatternWizardPage mainPage;
/** Created project. */
private SQLPatternItem sqlpatternItem;
private Property property;
private IPath path;
/**
* Constructs a new NewProjectWizard.
*
* @param author Project author.
* @param server
* @param password
*/
public NewSqlpatternWizard(IPath path) {
super();
this.path = path;
this.property = PropertiesFactory.eINSTANCE.createProperty();
this.property.setAuthor(((RepositoryContext) CorePlugin.getContext().getProperty(Context.REPOSITORY_CONTEXT_KEY))
.getUser());
this.property.setVersion(VersionUtils.DEFAULT_VERSION);
this.property.setStatusCode(""); //$NON-NLS-1$
sqlpatternItem = PropertiesFactory.eINSTANCE.createSQLPatternItem();
sqlpatternItem.setProperty(property);
ILibrariesService service = CorePlugin.getDefault().getLibrariesService();
URL url = service.getSqlPatternTemplate();
ByteArray byteArray = PropertiesFactory.eINSTANCE.createByteArray();
InputStream stream = null;
try {
stream = url.openStream();
byte[] innerContent = new byte[stream.available()];
stream.read(innerContent);
stream.close();
byteArray.setInnerContent(innerContent);
} catch (IOException e) {
RuntimeExceptionHandler.process(e);
}
sqlpatternItem.setEltName(path.segment(0));
sqlpatternItem.setContent(byteArray);
sqlpatternItem.setSystem(false);
}
/**
* @see org.eclipse.jface.wizard.Wizard#addPages()
*/
@Override
public void addPages() {
mainPage = new NewSqlpatternWizardPage(property, path);
addPage(mainPage);
setWindowTitle("New SQLTemplate"); //$NON-NLS-1$
setDefaultPageImageDescriptor(ImageProvider.getImageDesc(ECoreImage.METADATA_SQLPATTERN_WIZ));
}
/**
* @see org.eclipse.jface.wizard.Wizard#performFinish()
*/
@Override
public boolean performFinish() {
IProxyRepositoryFactory repositoryFactory = ProxyRepositoryFactory.getInstance();
try {
property.setId(repositoryFactory.getNextId());
repositoryFactory.create(sqlpatternItem, mainPage.getDestinationPath());
} catch (PersistenceException e) {
MessageDialog.openError(getShell(), Messages.getString(Messages.getString("NewSqlpatternWizard.failureTitle")), ""); //$NON-NLS-1$//$NON-NLS-2$
ExceptionHandler.process(e);
}
return sqlpatternItem != null;
}
/**
* Getter for project.
*
* @return the project
*/
public SQLPatternItem getSQLPattern() {
return this.sqlpatternItem;
}
}