package com.mobilesorcery.sdk.builder.s60;
import java.io.File;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.jface.preference.IPreferenceStore;
import com.mobilesorcery.sdk.core.CommandLineBuilder;
import com.mobilesorcery.sdk.core.DefaultPackager;
import com.mobilesorcery.sdk.core.IBuildResult;
import com.mobilesorcery.sdk.core.IBuildSession;
import com.mobilesorcery.sdk.core.IBuildVariant;
import com.mobilesorcery.sdk.core.IFileTreeDiff;
import com.mobilesorcery.sdk.core.IPackager;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.core.MoSyncTool;
import com.mobilesorcery.sdk.core.PackageToolPackager;
import com.mobilesorcery.sdk.core.ParameterResolverException;
import com.mobilesorcery.sdk.core.PropertyUtil;
import com.mobilesorcery.sdk.profiles.IProfile;
/**
* A class that contains the shared code between the 2nd and 3d edition
* Symbian packagers.
*
* @author Mattias
*/
public class V2V3Packager extends PackageToolPackager {
String uidPropertyName;
String resultExtension;
private final String uidParameter;
/**
* Creates a builder for either Symbian 2nd or 3d edition.
*
* @param uidString Defines which Symbian UID string to use.
* @param resultExtension The extension of the resulting package.
*/
public V2V3Packager(String uidString, String resultExtension, String uidParameter)
{
uidPropertyName = uidString;
this.resultExtension = resultExtension;
this.uidParameter = uidParameter;
}
@Override
protected Map<String, List<File>> computeBuildResult(MoSyncProject project,
IBuildVariant variant) throws ParameterResolverException, CoreException {
DefaultPackager internal = new DefaultPackager(project, variant);
File packageOutputDir = internal.resolveFile("%package-output-dir%"); //$NON-NLS-1$
String appName = internal.getParameters( ).get( DefaultPackager.APP_NAME );
return createBuildResult(new File(packageOutputDir, appName + resultExtension));
}
/**
* Removes 0x in front of the UID if necessary.
*
* @param project To look
* @return The UID associated with the project.
*/
public static String formatUID(String uid)
{
if ( uid.startsWith("0x") ) { //$NON-NLS-1$
uid = uid.substring( 2 );
}
return uid;
}
@Override
protected void addPlatformSpecifics(MoSyncProject project,
IBuildVariant variant, CommandLineBuilder commandLine) {
/* Symbian UID */
String uid = formatUID(project.getProperty(uidPropertyName));
commandLine.flag(uidParameter).with( uid );
boolean useProjectSpecificKeys = PropertyUtil.getBoolean(project, PropertyInitializer.S60_PROJECT_SPECIFIC_KEYS);
IPreferenceStore prefs = Activator.getDefault().getPreferenceStore();
String certFile = useProjectSpecificKeys ?
project.getProperty(PropertyInitializer.S60_CERT_FILE) :
prefs.getString(PropertyInitializer.S60_CERT_FILE);
String pass = useProjectSpecificKeys ?
project.getProperty(PropertyInitializer.S60_PASS_KEY) :
prefs.getString(PropertyInitializer.S60_PASS_KEY);
String keyFile = useProjectSpecificKeys ?
project.getProperty(PropertyInitializer.S60_KEY_FILE) :
prefs.getString(PropertyInitializer.S60_KEY_FILE);
commandLine.flag("--s60cert").with(new File(certFile));
commandLine.flag("--s60key").with(new File(keyFile));
commandLine.flag("--s60pass", true).with(pass);
}
@Override
protected File getDefaultIconFile() {
return null;
}
}