/*******************************************************************************
* Copyright (c) 2000-present Liferay, Inc. All rights reserved.
*
* This library is free software; you can redistribute it and/or modify it under
* the terms of the GNU Lesser General Public License as published by the Free
* Software Foundation; either version 2.1 of the License, or (at your option)
* any later version.
*
* This library is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
* details.
*
*******************************************************************************/
package com.liferay.ide.portlet.core.operation;
import com.liferay.ide.core.util.StringPool;
import com.liferay.ide.portlet.core.PortletCore;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.jst.j2ee.internal.common.operations.INewJavaClassDataModelProperties;
import org.eclipse.jst.j2ee.internal.web.operations.CreateWebClassTemplateModel;
import org.eclipse.jst.j2ee.internal.web.operations.NewWebClassOperation;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.osgi.service.prefs.BackingStoreException;
import org.osgi.service.prefs.Preferences;
/**
* @author Greg Amerson
* @author Cindy Li
*/
@SuppressWarnings( "restriction" )
public class NewPortletClassOperation extends NewWebClassOperation
{
protected static final String TEMPLATE_DIR = "/templates/"; //$NON-NLS-1$
protected static final String TEMPLATE_FILE = TEMPLATE_DIR + "portlet.javajet"; //$NON-NLS-1$
public NewPortletClassOperation( IDataModel dataModel )
{
super( dataModel );
}
@Override
protected CreateWebClassTemplateModel createTemplateModel()
{
return new CreatePortletTemplateModel( getDataModel() );
}
@Override
public IStatus execute( IProgressMonitor monitor, IAdaptable info ) throws ExecutionException
{
String defaultSuperclasses =
INewPortletClassDataModelProperties.QUALIFIED_MVC_PORTLET + StringPool.COMMA +
INewPortletClassDataModelProperties.QUALIFIED_LIFERAY_PORTLET + StringPool.COMMA +
INewPortletClassDataModelProperties.QUALIFIED_GENERIC_PORTLET;
try
{
Preferences preferences = PortletCore.getPreferences();
String superclasses = preferences.get( PortletCore.PREF_KEY_PORTLET_SUPERCLASSES_USED, null );
String superclass = getDataModel().getStringProperty( INewJavaClassDataModelProperties.SUPERCLASS );
if( ! defaultSuperclasses.contains( superclass ) )
{
String newSuperclasses = null;
if( superclasses == null )
{
newSuperclasses = superclass;
}
else if( ! superclasses.contains( superclass ) )
{
newSuperclasses = superclasses + StringPool.COMMA + superclass;
}
if( newSuperclasses != null )
{
preferences.put( PortletCore.PREF_KEY_PORTLET_SUPERCLASSES_USED, newSuperclasses );
preferences.flush();
}
}
}
catch( BackingStoreException e )
{
PortletCore.logError( e );
}
return super.execute( monitor, info );
}
@Override
protected String getTemplateFile()
{
return TEMPLATE_FILE;
}
@Override
protected Object getTemplateImplementation()
{
return PortletTemplate.create( null );
}
// protected String generateTemplateSource(WTPPlugin plugin,
// CreateJavaEEArtifactTemplateModel templateModel,
// String templateFile, Object templateImpl, IProgressMonitor monitor)
// throws JETException {
// always use the template file version
// return generateTemplateSource(plugin, templateModel, templateFile,
// monitor);
// }
}