imakerplugin/com.nokia.s60tools.imaker/src/com/nokia/s60tools/imaker/internal/model/ImakerProperties.java
author haismail <hussein.ismail@nokia.com>
Mon, 25 Jan 2010 12:26:21 +0200
changeset 1 7ff23301fe22
parent 0 61163b28edca
child 11 217e69fc5beb
permissions -rw-r--r--
iMaker plugin updated: Ticket #1188: As a Carbide.c++ user I want to modify my .IMP file using iMaker plugin
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     1
/*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     3
* All rights reserved.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     4
* This component and the accompanying materials are made available
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     6
* which accompanies this distribution, and is available
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     8
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     9
* Initial Contributors:
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    11
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    12
* Contributors:
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    13
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    14
* Description:
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    15
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    16
*/
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    17
package com.nokia.s60tools.imaker.internal.model;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    18
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    19
import java.io.File;
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    20
import java.io.IOException;
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    21
import java.io.OutputStream;
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    22
import java.util.ArrayList;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    23
import java.util.Iterator;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    24
import java.util.List;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    25
import java.util.Properties;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    26
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    27
import org.eclipse.core.resources.IFile;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    28
import org.eclipse.core.resources.IProject;
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    29
import org.eclipse.core.resources.IResource;
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    30
import org.eclipse.core.runtime.CoreException;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    31
import org.eclipse.core.runtime.IPath;
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    32
import org.eclipse.emf.common.util.EList;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    33
import org.eclipse.emf.common.util.URI;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    34
import org.eclipse.emf.ecore.EObject;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    35
import org.eclipse.emf.ecore.resource.Resource;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    36
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    37
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    38
import com.nokia.s60tools.imaker.IMakerKeyConstants;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    39
import com.nokia.s60tools.imaker.IMakerUtils;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    40
import com.nokia.s60tools.imaker.Messages;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    41
import com.nokia.s60tools.imaker.UIVariable;
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    42
import com.nokia.s60tools.imaker.internal.impmodel.ConfigEntry;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    43
import com.nokia.s60tools.imaker.internal.impmodel.FileListEntry;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    44
import com.nokia.s60tools.imaker.internal.impmodel.ImpConstants;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    45
import com.nokia.s60tools.imaker.internal.impmodel.ImpDocument;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    46
import com.nokia.s60tools.imaker.internal.impmodel.ImpmodelFactory;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    47
import com.nokia.s60tools.imaker.internal.impmodel.OverrideConfiguration;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    48
import com.nokia.s60tools.imaker.internal.impmodel.OverrideFiles;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    49
import com.nokia.s60tools.imaker.internal.impmodel.Variable;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    50
import com.nokia.s60tools.imaker.internal.impmodel.util.BasicTokenizer;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    51
import com.nokia.s60tools.imaker.internal.impmodel.util.ImpResourceImpl;
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    52
import com.nokia.s60tools.imaker.internal.managers.ProjectManager;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    53
import com.nokia.s60tools.imaker.internal.model.iContent.IContentFactory;
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    54
import com.nokia.s60tools.imaker.internal.model.iContent.IMAGESECTION;
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    55
import com.nokia.s60tools.imaker.internal.model.iContent.IbyEntry;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    56
import com.nokia.s60tools.imaker.internal.wrapper.IMakerWrapperPreferences;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    57
import com.nokia.s60tools.imaker.internal.wrapper.PlatsimManager;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    58
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    59
public class ImakerProperties extends Properties {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    60
	public static final String SEPARATOR			  = ":;";
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    61
	public static final String IBYENTRY_FIELDS_SEPARATOR	  = ";";
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    62
	public static final String GENERATED_FILES_FOLDER = "imakerplugin";
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    63
	private static final long serialVersionUID = 1L;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    64
	private List<UIVariable> variables=null;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    65
	private String activeFile = null;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    66
	private boolean used = false;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    67
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    68
	/**
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    69
	 * Create imaker properties from the given file
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    70
	 * @param file
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    71
	 * @return
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    72
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    73
	public static ImakerProperties createFromFile(IFile file) {
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    74
		if(file!=null) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    75
			ImpDocument model = getModel(file);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    76
			return convertModelToProperties(model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    77
		}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    78
		return null;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    79
	}
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    80
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    81
	private static ImakerProperties convertModelToProperties(ImpDocument model) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    82
		ImakerProperties properties = new ImakerProperties();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    83
		if(model!=null) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    84
			//main tab basic
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    85
			addProperty(properties, IMakerKeyConstants.PRODUCT, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    86
					.getVariable(ImpConstants.TARGET_PRODUCT), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    87
			addProperty(properties, IMakerKeyConstants.TARGET_LIST, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    88
					.getVariable(ImpConstants.DEFAULT_GOALS), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    89
			addProperty(properties, IMakerKeyConstants.TYPE, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    90
					.getVariable(ImpConstants.TYPE), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    91
			addProperty(properties, IMakerKeyConstants.SYMBOLFILES, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    92
					.getVariable(ImpConstants.USE_SYMGEN), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    93
			addProperty(properties, IMakerKeyConstants.VERBOSE, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    94
					.getVariable(ImpConstants.VERBOSE), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    95
			
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    96
			//platsim variables
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    97
			addProperty(properties, IMakerKeyConstants.PLATSIM_INSTANCE, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    98
					.getVariable(ImpConstants.PLATSIM_INSTANCE), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
    99
			addProperty(properties, IMakerKeyConstants.PLATSIM_RUN, model
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   100
					.getVariable(ImpConstants.PLATSIM_RUN), model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   101
			
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   102
			//additional variables
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   103
			EList<Variable> vars = model.getVariables();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   104
			StringBuffer sb = new StringBuffer();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   105
			Variable variable;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   106
			for (int i = 0; i < vars.size(); i++) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   107
				variable = vars.get(i);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   108
				sb.append(variable.getName()+"="+variable.getValue());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   109
				if(i<vars.size()-1) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   110
					sb.append(" ");
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   111
				}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   112
			}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   113
			if(!"".equals(sb.toString())) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   114
				properties.put(IMakerKeyConstants.ADDITIONAL_PARAMETERS, sb.toString());				
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   115
			}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   116
			
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   117
			//files
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   118
			EList<OverrideFiles> files = model.getOrideFiles();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   119
			List<IbyEntry> ibyEntries = new ArrayList<IbyEntry>();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   120
			if (!files.isEmpty()) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   121
				OverrideFiles of = files.get(0);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   122
				EList<FileListEntry> entries = of.getEntries();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   123
				for (int i = 0; i < entries.size(); i++) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   124
					FileListEntry fEntry = entries.get(i);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   125
					EList<ConfigEntry> actions = fEntry.getActions();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   126
					if (!actions.isEmpty()) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   127
						ConfigEntry action = actions.get(0);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   128
						IbyEntry iby = IContentFactory.eINSTANCE.createIbyEntry();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   129
						iby.setEnabled(true);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   130
						iby.setFile(fEntry.getSource());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   131
						iby.setTarget(fEntry.getTarget());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   132
						iby.setLocation(IMAGESECTION.get(action.getLocation()));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   133
						ibyEntries.add(iby);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   134
					}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   135
				}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   136
			}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   137
			if(!ibyEntries.isEmpty()) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   138
				properties.put(IMakerKeyConstants.DEBUGFILES, ibyEntries);
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   139
			}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   140
		}
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   141
		return properties;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   142
	}
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   143
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   144
	private static void addProperty(ImakerProperties properties,
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   145
			String key, Variable var, ImpDocument model) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   146
		if(var!=null) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   147
			model.getVariables().remove(var);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   148
			properties.put(key, var.getValue());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   149
		}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   150
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   151
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   152
	private static ImpDocument getModel(IFile file) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   153
		ResourceSetImpl rs = new ResourceSetImpl();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   154
		
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   155
		URI uri = URI.createFileURI(file.getLocation().toFile().getAbsolutePath());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   156
		Resource resource = rs.createResource(uri);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   157
		try {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   158
			resource.load(null);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   159
			EList<EObject> contents = resource.getContents();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   160
			return (ImpDocument) contents.get(0);	
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   161
		} catch (IOException e) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   162
			e.printStackTrace();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   163
			return null;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   164
		}
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   165
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   166
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   167
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   168
	 * Create imaker properties from file
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   169
	 * @param file
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   170
	 * @return
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   171
	 */
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   172
	public void saveToFile(File file) {
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   173
		if(file!=null) {
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   174
			ImpDocument model = getModel();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   175
			Resource resource = getResource(file);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   176
			resource.getContents().add(model);
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   177
			try {
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   178
				resource.save(null);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   179
			} catch (IOException e) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   180
				// TODO log?
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   181
				e.printStackTrace();
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   182
			}	
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   183
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   184
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   185
	
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   186
	private Resource getResource(File file) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   187
		ResourceSetImpl rs = new ResourceSetImpl();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   188
		URI uri = URI.createFileURI(file.getAbsolutePath());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   189
		Resource resource = rs.createResource(uri);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   190
		return resource;	
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   191
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   192
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   193
	/**
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   194
	 * Constract Impmodel from these properties
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   195
	 * @return
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   196
	 */
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   197
	private ImpDocument getModel() {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   198
		Properties clone = (Properties) clone();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   199
		ImpmodelFactory factory = ImpmodelFactory.eINSTANCE;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   200
		ImpDocument doc = factory.createImpDocument();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   201
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   202
		//save variables
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   203
		addBasicVariables(clone, doc,factory);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   204
		addAdditionalVariables(clone, doc,factory);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   205
		
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   206
		//save platsim variables
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   207
		addPlatsimVariables(clone, doc,factory);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   208
		
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   209
		//save override files
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   210
		Object oEntries = clone.remove(IMakerKeyConstants.DEBUGFILES);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   211
		if(oEntries!=null) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   212
			List<IbyEntry> entries = (List<IbyEntry>) oEntries;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   213
			OverrideFiles files = factory.createOverrideFiles();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   214
			OverrideConfiguration confs = factory.createOverrideConfiguration();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   215
			for (IbyEntry ibyEntry : entries) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   216
				if(!ibyEntry.isEnabled()) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   217
					continue; //Notice skipping disabled entries
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   218
				}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   219
				FileListEntry fileEntry = factory.createFileListEntry();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   220
				ConfigEntry configEntry = factory.createConfigEntry();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   221
				fileEntry.setSource(ibyEntry.getFile());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   222
				fileEntry.setTarget(ibyEntry.getTarget());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   223
				files.getEntries().add(fileEntry);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   224
				
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   225
				//
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   226
				configEntry.setTarget(ibyEntry.getTarget());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   227
				configEntry.setAction("replace-add");
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   228
				configEntry.setLocation(ibyEntry.getLocation().getName().toLowerCase());
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   229
				confs.getEntries().add(configEntry);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   230
			}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   231
			if(!files.getEntries().isEmpty()) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   232
				doc.getOrideFiles().add(files);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   233
				doc.getOrideConfs().add(confs);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   234
			}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   235
		}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   236
		
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   237
		//save override confs
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   238
		return doc;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   239
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   240
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   241
	private void addPlatsimVariables(Properties clone, ImpDocument doc,
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   242
			ImpmodelFactory factory) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   243
		addVariable(doc, factory, ImpConstants.PLATSIM_INSTANCE, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   244
				.remove(IMakerKeyConstants.PLATSIM_INSTANCE));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   245
		addVariable(doc, factory, ImpConstants.PLATSIM_RUN, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   246
				.remove(IMakerKeyConstants.PLATSIM_RUN));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   247
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   248
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   249
	private void addAdditionalVariables(Properties clone, ImpDocument doc,
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   250
			ImpmodelFactory factory) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   251
		String adds = (String) clone.remove(IMakerKeyConstants.ADDITIONAL_PARAMETERS);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   252
		if(adds==null) return;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   253
		BasicTokenizer bt = new BasicTokenizer(adds);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   254
		while (bt.hasMoreTokens()) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   255
			String token = bt.nextToken();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   256
			String[] comps = token.split("=");
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   257
			if(comps.length==2) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   258
				int start = 0;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   259
				int end = comps[1].length();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   260
				if(comps[1].charAt(0)=='"') start++;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   261
				if(comps[1].charAt(comps[1].length()-1)=='"') end--;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   262
				addVariable(doc, factory, comps[0], comps[1].substring(start,end));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   263
			}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   264
		}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   265
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   266
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   267
	private void addBasicVariables(Properties clone, ImpDocument doc, ImpmodelFactory factory) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   268
		addVariable(doc, factory, ImpConstants.TARGET_PRODUCT, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   269
				.remove(IMakerKeyConstants.PRODUCT));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   270
		addVariable(doc, factory, ImpConstants.DEFAULT_GOALS, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   271
				.remove(IMakerKeyConstants.TARGET_LIST));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   272
		addVariable(doc, factory, ImpConstants.TYPE, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   273
				.remove(IMakerKeyConstants.TYPE));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   274
		addVariable(doc, factory, ImpConstants.USE_SYMGEN, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   275
				.remove(IMakerKeyConstants.SYMBOLFILES));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   276
		addVariable(doc, factory, ImpConstants.VERBOSE, (String) clone
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   277
				.remove(IMakerKeyConstants.VERBOSE));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   278
//		addVariable(doc, factory, ImpConstants.VERBOSE, (String) clone.remove(IMakerKeyConstants.VERBOSE));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   279
//		addVariable(doc, factory, ImpConstants.VERBOSE, (String) clone.remove(IMakerKeyConstants.VERBOSE));
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   280
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   281
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   282
	private void addVariable(ImpDocument doc, ImpmodelFactory factory, String name, String value) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   283
		Variable var;
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   284
		if (value!=null) {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   285
			var = factory.createVariable();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   286
			var.setName(name);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   287
			var.setValue(value);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   288
			doc.getVariables().add(var);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   289
		}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   290
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   291
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   292
	public ImakerProperties() {}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   293
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   294
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   295
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   296
	 * Parse the contents of this properties file and create imaker command that is executable
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   297
	 * @param selectedProject
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   298
	 * @param workdir Place where the temporary iby/mk files will be placed
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   299
	 * @return
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   300
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   301
	public List<String> parseImakerCommand(IProject selectedProject, IPath workdir) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   302
		String drive = IMakerUtils.getProjectRootLocation(selectedProject);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   303
		ArrayList<String> command = new ArrayList<String>();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   304
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   305
		String makefile = (String) get(IMakerKeyConstants.MAKEFILE);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   306
		if(makefile!=null) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   307
			appendCommand(command,IMakerWrapperPreferences.ARG_FETCH_CONFIGURATION);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   308
			appendCommand(command,makefile);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   309
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   310
		addAdditionalParameters(command,(String) get(IMakerKeyConstants.TARGET_LIST)," ");
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   311
		String platsim = (String) get(IMakerKeyConstants.PLATSIM_INSTANCE);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   312
		if(platsim!=null) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   313
			command.add(IMakerKeyConstants.PLATSIM_INSTANCE +"="+parse(platsim,drive));
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   314
			String run = (String)get(IMakerKeyConstants.PLATSIM_RUN);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   315
			if(run!=null&&run.equals("true")) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   316
				command.add(IMakerKeyConstants.PLATSIM_RUN +"=1");		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   317
			}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   318
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   319
		addAdditionalParameters(command,(String) get(IMakerKeyConstants.ADDITIONAL_PARAMETERS),SEPARATOR);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   320
		addAdditionalParameters(command, (String) get(IMakerKeyConstants.MODIFIED_SETTINGS),SEPARATOR);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   321
		String type = (String) get(IMakerKeyConstants.TYPE);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   322
		command.add(IMakerWrapperPreferences.TYPE+"="+type);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   323
		String verb = (String) get(IMakerKeyConstants.VERBOSE);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   324
		if(verb!=null) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   325
			command.add(Messages.getString("Flashmenu.9"));
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   326
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   327
		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   328
		// parse iby files and makefile
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   329
		String str = (String)get(IMakerKeyConstants.DEBUGFILES);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   330
		if(str!=null&&!str.equals("")) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   331
			List<IbyEntry> entries = new ArrayList<IbyEntry>();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   332
			String[] entriesStr = str.split(ImakerProperties.SEPARATOR);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   333
			for (int i = 0; i < entriesStr.length; i++) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   334
				String entryStr = entriesStr[i];
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   335
				if(entryStr!=null&&!entryStr.equals("")) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   336
					IbyEntry entry = IContentFactory.eINSTANCE.createEntryFromString(entryStr);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   337
					if(entry.isEnabled()) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   338
						entries.add(entry);						
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   339
					}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   340
				}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   341
			}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   342
			ProjectManager pm = new ProjectManager(selectedProject);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   343
			IPath mkfile = IMakerUtils.createIbyFiles(entries, pm, workdir);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   344
			if(mkfile!=null) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   345
				appendCommand(command,IMakerWrapperPreferences.ARG_FETCH_CONFIGURATION);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   346
				appendCommand(command,"\""+mkfile.toOSString()+"\"");
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   347
			}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   348
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   349
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   350
		return command;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   351
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   352
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   353
	private String parse(String instance, String env) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   354
		if(instance==null) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   355
			instance="1";
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   356
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   357
		if(instance.equals(Messages.getString("PlatsimTab.0"))) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   358
			PlatsimManager pm = new PlatsimManager(env);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   359
			int max = 1;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   360
			List<String> instances = pm.getInstances();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   361
			for (String ins : instances) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   362
				int intIns = Integer.parseInt(ins);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   363
				if(intIns>max) max = intIns;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   364
			}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   365
			return String.valueOf(max+1);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   366
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   367
		return instance;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   368
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   369
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   370
	private void addAdditionalParameters(ArrayList<String> command,
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   371
			String adds, String sep) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   372
		if(adds==null||adds.equals("")) { //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   373
			return;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   374
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   375
		String[] parts = adds.split(sep); //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   376
		for (int i = 0; i < parts.length; i++) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   377
			String part = parts[i];
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   378
			if(!part.equals("")) { //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   379
				appendCommand(command, part);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   380
			}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   381
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   382
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   383
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   384
	private void appendCommand(ArrayList<String> command, String value) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   385
		if((value!=null)&&!(value.equals(""))) { //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   386
			command.add(value.trim());
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   387
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   388
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   389
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   390
	private void updateVariables() {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   391
		if(variables==null) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   392
			return;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   393
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   394
		List<UIVariable> includeVariables = IMakerUtils.getCommandlineIncludeVariables(variables);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   395
		List<String> variablesToStrings = IMakerUtils.convertVariablesToStrings(includeVariables);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   396
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   397
		StringBuilder settings = new StringBuilder();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   398
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   399
		for (Iterator<String> iterator = variablesToStrings.iterator(); iterator
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   400
		.hasNext();) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   401
			String setting = iterator.next();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   402
			settings.append(setting+SEPARATOR); //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   403
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   404
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   405
		String string = settings.toString();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   406
		if(!string.equals("")) { //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   407
			put(IMakerKeyConstants.MODIFIED_SETTINGS, string);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   408
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   409
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   410
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   411
	public void setVariables(List<UIVariable> variables) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   412
		this.variables = variables;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   413
		updateVariables();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   414
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   415
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   416
	public void setActiveFile(String path) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   417
		this.activeFile = path;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   418
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   419
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   420
	public String getActiveFile() {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   421
		return activeFile;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   422
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   423
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   424
	public void setUsed(boolean b) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   425
		this.used  = b;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   426
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   427
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   428
	public boolean isUsed() {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   429
		return this.used;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   430
	}
1
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   431
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   432
	@Override
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   433
	public synchronized void store(OutputStream out, String comments)
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   434
			throws IOException {
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   435
		ImpDocument model = getModel();
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   436
		URI uri = URI.createFileURI("sample.imp");
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   437
		ImpResourceImpl res = new ImpResourceImpl(uri);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   438
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   439
		res.getContents().add(model);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   440
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   441
		res.save(out);
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   442
	}
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   443
7ff23301fe22 iMaker plugin updated:
haismail <hussein.ismail@nokia.com>
parents: 0
diff changeset
   444
	
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   445
}