{
String projectName = informationPage.getProjectName();
ProjectType projectType = informationPage.getProjectType();
// Creating the project
final Project project = new Project( projectType, projectName );
if ( projectType.equals( ProjectType.ONLINE ) )
// Project is an "Online Project"
{
// Setting the connection to use
project.setConnection( connectionSelectionPage.getSelectedConnection() );
RunnableContextRunner.execute( new StudioConnectionRunnableWithProgress()
{
public void run( StudioProgressMonitor monitor )
{
// Getting the correct SchemaConnector for this connection
List<SchemaConnector> correctSchemaConnectors = getCorrectSchemaConnectors(
project.getConnection(), monitor );
// If no suitable SchemaConnector has been found, we display an
// error message and return false;
if ( correctSchemaConnectors.size() == 0 )
{
monitor.reportError(
"No suitable SchemaConnector has been found for the choosen Directory Server.", //$NON-NLS-1$
new NoSuitableSchemaConnectorException() );
}
// Check if generic schema connector is included, then remove it to use a specific one
if ( correctSchemaConnectors.size() > 1 )
{
for ( SchemaConnector schemaConnector : correctSchemaConnectors )
{
if ( schemaConnector instanceof GenericSchemaConnector )
{
correctSchemaConnectors.remove( schemaConnector );
break;
}
}
}
// Getting the correct SchemaConnector
SchemaConnector correctSchemaConnector = null;
if ( correctSchemaConnectors.size() == 1 )
{
correctSchemaConnector = correctSchemaConnectors.get( 0 );
}
else
{
// TODO display a dialog in which the user can select the correct schema connector
}
project.setSchemaConnector( correctSchemaConnector );
// Fetching the Online Schema
project.fetchOnlineSchema( monitor );
}
public String getName()
{
return Messages.getString( "NewProjectWizard.FetchingSchema" ); //$NON-NLS-1$;
}
public Object[] getLockedObjects()
{
return null;
}
public String getErrorMessage()
{
return Messages.getString( "NewProjectWizard.ErrorWhileFetchingSchema" ); //$NON-NLS-1$;
}
public Connection[] getConnections()
{
return null;
}
}, getContainer(), true );
}
else if ( projectType.equals( ProjectType.OFFLINE ) )
// Project is an "Offline Project"
{
// Getting the selected 'core' schemas
String[] selectedSchemas = schemasSelectionPage.getSelectedSchemas();
ServerTypeEnum serverType = schemasSelectionPage.getServerType();
if ( ( selectedSchemas != null ) && ( serverType != null ) )
{
SchemaHandler schemaHandler = project.getSchemaHandler();
for ( String selectedSchema : selectedSchemas )
{
Schema schema = PluginUtils.loadCoreSchema( serverType, selectedSchema );
if ( schema != null )
{