[Esbox-commits] r1003 - in branches/work_Petr: org.maemo.esbox.maemosdk.core org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/commands org.maemo.esbox.scratchbox.sb1 org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk

baranov at garage.maemo.org baranov at garage.maemo.org
Wed Nov 26 15:58:56 EET 2008


Author: baranov
Date: 2008-11-26 15:58:55 +0200 (Wed, 26 Nov 2008)
New Revision: 1003

Added:
   branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/TestSb1SDKTarget.java
   branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseSb1Test.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapter.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapterFactory.java
Modified:
   branches/work_Petr/org.maemo.esbox.maemosdk.core/plugin.xml
   branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/AllTests.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/plugin.xml
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDK.java
   branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDKTarget.java
Log:
Task: IDE modifies list of devkits in existing target

Modified: branches/work_Petr/org.maemo.esbox.maemosdk.core/plugin.xml
===================================================================
--- branches/work_Petr/org.maemo.esbox.maemosdk.core/plugin.xml	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.maemosdk.core/plugin.xml	2008-11-26 13:58:55 UTC (rev 1003)
@@ -50,13 +50,6 @@
          </adapter>
        </factory>
        <!-- generic maemo -->
-      <factory
-            adaptableType="org.maemo.mica.common.core.sdk.ISDKTarget"
-            class="org.maemo.esbox.internal.maemosdk.core.adapters.Scratchbox1PrepareTargetProcessLaunchAdapterFactory">
-         <adapter
-               type="org.maemo.mica.common.core.adapters.IPrepareTargetProcessLaunchAdapter">
-         </adapter>
-      </factory>
    </extension>
 
   <extension

Modified: branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/AllTests.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/AllTests.java	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/AllTests.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -29,6 +29,7 @@
 		suite.addTestSuite(TestSB2SDKProvider.class);
 		suite.addTestSuite(TestProcessLauncher.class);
 		suite.addTestSuite(TestSB1SDKProvider.class);
+		suite.addTestSuite(TestSb1SDKTarget.class);
 		//$JUnit-END$
 		return suite;
 	}

Added: branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/TestSb1SDKTarget.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/TestSb1SDKTarget.java	                        (rev 0)
+++ branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/TestSb1SDKTarget.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia Corporation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Petr Baranov (Nokia) - initial API and implementation
+ *******************************************************************************/
+package org.maemo.esbox.scratchbox.tests;
+
+import java.util.List;
+
+import org.junit.Test;
+import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDKTarget;
+import org.maemo.esbox.scratchbox.tests.commands.BaseSb1Test;
+import org.maemo.mica.common.core.MicaException;
+
+
+public class TestSb1SDKTarget extends BaseSb1Test{
+
+	@Test
+	public void testGetCompiler() throws Exception{
+		List<String> compilers = sb1Sdk.getCompilers();
+		String compiler = targetARMEL.getCompiler();
+		assertIsItem(compilers, compiler);
+	}
+
+	@Test
+	public void testGetCpuTransp() throws Exception{
+		List<String> cpuTrasps = sb1Sdk.getCputransp();
+		
+		String cpuTransp = targetARMEL.getCputransp();
+		assertIsItem(cpuTrasps, cpuTransp);
+		
+		cpuTransp = targetX86.getCputransp();
+		assertEquals("none", cpuTransp);
+	}
+	
+	@Test
+	public void testGetDevkit() throws Exception {
+		List<String> devkits = sb1Sdk.getDevkits();
+		
+		List<String> targetDevkits = targetARMEL.getDevkit();
+		assertAreItems(devkits, targetDevkits);
+		
+		targetDevkits = targetX86.getDevkit();
+		assertAreItems(devkits, targetDevkits);
+	}
+
+	@Test
+	public void testAddNewDevkit() throws Exception {
+		testAddNewDevkit(targetARMEL);
+		testAddNewDevkit(targetX86);
+	}
+	
+	@Test
+	public void testAddExistingDevkit() throws Exception {
+		testAddExistingDevkit(targetARMEL);
+		testAddExistingDevkit(targetX86);
+	}
+	
+	@Test
+	public void testAddFakeDevkit() throws Exception {
+		testFakeDevkit(targetARMEL);
+		testFakeDevkit(targetX86);
+	}
+	
+	//--private
+	private void assertAreItems(List<String> list, List<String> items) {
+		for(String devkit:items)
+			assertIsItem(list, devkit);
+	}
+	
+	public static void assertIsItem(List<String> list, String item) {
+		assertNotNull(item);
+		assertTrue(list.contains(item));
+	}
+	
+
+	private void testAddNewDevkit(IScratchbox1SDKTarget target) throws MicaException {
+		List<String> devkits = sb1Sdk.getDevkits();
+		List<String> targetDevkits = target.getDevkit();
+		String newDevkit = null;
+		for(String tmpDk : devkits){
+			// do not use debian-lenny
+			if(!tmpDk.equals("debian-lenny")&&!targetDevkits.contains(tmpDk)){
+				newDevkit = tmpDk;
+				break;
+			}
+		}
+		if(newDevkit==null)
+			return;
+			//fail("Impossible to add new devkit, since target "+target.getName()+" already includes all devkits.");
+		assertTrue(target.addDevkit(newDevkit));
+		targetDevkits = target.getDevkit();
+		assertTrue(targetDevkits.contains(newDevkit));
+	}
+	
+	
+
+	private void testAddExistingDevkit(IScratchbox1SDKTarget target) throws MicaException {
+		List<String> targetDevkits = target.getDevkit();
+		if(targetDevkits.isEmpty())
+			fail("Impossible to add existing devkit, since target "+target.getName()+" does not have any devkit.");
+		String existingDevkit = targetDevkits.get(0);
+		try{
+			assertFalse(target.addDevkit(existingDevkit));
+		}catch(MicaException e){
+			fail("Exception should not be thrown.");
+		}
+	}
+	
+	
+
+	private void testFakeDevkit(IScratchbox1SDKTarget target) throws MicaException {
+		List<String> dkBefore = target.getDevkit();
+		String fakeDevkit = "fakedk";
+		try{
+			target.addDevkit(fakeDevkit);
+			fail("Exception should be thrown");
+		}catch(MicaException e){
+			List<String> dkAfter = target.getDevkit();
+			assertEquals(dkBefore, dkAfter);
+		}
+	}
+	
+	
+}

Added: branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseSb1Test.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseSb1Test.java	                        (rev 0)
+++ branches/work_Petr/org.maemo.esbox.maemosdk.tests/src/org/maemo/esbox/scratchbox/tests/commands/BaseSb1Test.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -0,0 +1,34 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia Corporation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Petr Baranov (Nokia) - initial API and implementation
+ *******************************************************************************/
+package org.maemo.esbox.scratchbox.tests.commands;
+
+import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
+import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDKTarget;
+import org.maemo.mica.common.core.sdk.ISDKTarget;
+
+public abstract class BaseSb1Test extends BaseTest {
+
+	protected IScratchbox1SDKTarget targetARMEL = null; 
+	protected IScratchbox1SDKTarget targetX86 = null;
+	
+	@Override
+	public void setUp() throws Exception {
+		super.setUp();
+		for (ISDKTarget tmp:sb1Sdk.getSDKTargets()) {
+			if(tmp.getArchitecture().equals(IScratchboxSDKTarget.ARCHITECTURE_ARMEL))
+				targetARMEL=(IScratchbox1SDKTarget)tmp;
+			else if(tmp.getArchitecture().equals(IScratchboxSDKTarget.ARCHITECTURE_X86))
+				targetX86 = (IScratchbox1SDKTarget)tmp;
+		}
+	}
+
+	
+}

Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/plugin.xml
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/plugin.xml	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/plugin.xml	2008-11-26 13:58:55 UTC (rev 1003)
@@ -39,6 +39,13 @@
                type="org.maemo.esbox.internal.api.maemosdk.core.tools.IMaemoLauncherAdapter">
          </adapter>
       </factory>
+      <factory
+            adaptableType="org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDKTarget"
+            class="org.maemo.esbox.internal.scratchbox.sb1.core.adapters.Sb1TargetConfigurationAdapterFactory">
+         <adapter
+               type="org.maemo.mica.common.core.adapters.ITargetConfiguratorAdapter">
+         </adapter>
+      </factory>
    </extension>
    
    <extension

Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/command/CreateTargetCommand.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -48,6 +48,26 @@
 			throw new ScratchboxInvalidParameterException(
 					"Invalid number of parameters");
 
+		String setupTargetCommand = createCli(param,false);
+		Process process = createProcess(setupTargetCommand, null);
+		getInputFromProcessAndWait(process, false, 0);
+		sdk.refresh();
+		return true;
+	}
+	
+	public Object forceCommand(List<String> param) throws MicaException {
+		if (!this.checkParameters(param))
+			throw new ScratchboxInvalidParameterException(
+					"Invalid number of parameters");
+
+		String setupTargetCommand = createCli(param,true);
+		Process process = createProcess(setupTargetCommand, null);
+		getInputFromProcessAndWait(process, false, 0);
+		sdk.refresh();
+		return true;
+	}
+	
+	private String createCli(List<String> param, boolean force) {
 		String targetName = param.get(0);
 		String compilerName = param.get(1);
 		String devkitsNames = param.get(2);
@@ -60,16 +80,16 @@
 				compilerName, devkitsNames, cputranspName);
 		String setupTargetCommand = this.replaceScratchboxConfigCommand(
 				setupTargetAction, setupActionOptionsReplaced);
-
-		Process process = createProcess(setupTargetCommand, null);
-
-		getInputFromProcessAndWait(process, false, 0);
-
-		sdk.refresh();
-
-		return true;
+		
+		if(force)
+			setupTargetCommand += " "+commandAbstractor
+			.getPreferenceValue(SB1PreferenceConstants.SB1_SETUP_OPT_FORCE);
+		
+		return setupTargetCommand;
 	}
-
+	
+	
+	
 	/**
 	 * Replace the options of action SETUP. The options of SETUP action are
 	 * different from the other ones, so this method replaces the variables

Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDK.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -10,24 +10,39 @@
  *******************************************************************************/
 package org.maemo.esbox.internal.scratchbox.sb1.core;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
-import org.maemo.esbox.internal.api.scratchbox.core.sdk.*;
+import org.maemo.esbox.internal.api.scratchbox.core.sdk.AbstractScratchboxSDK;
+import org.maemo.esbox.internal.api.scratchbox.core.sdk.CacheUtils;
 import org.maemo.esbox.internal.scratchbox.sb1.Activator;
-import org.maemo.esbox.internal.scratchbox.sb1.command.*;
+import org.maemo.esbox.internal.scratchbox.sb1.command.CreateTargetCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.GetCurrentTargetCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.GetVersionScratchboxCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.KillallCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListCompilersCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListCputranspCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListDevkitsCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListSessionsCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ListTargetsCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.RemoveTargetCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.SelectTargetCommand;
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
 import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.machine.IMachine;
 import org.maemo.mica.common.core.machine.MachineUtils;
-import org.maemo.mica.common.core.sdk.*;
+import org.maemo.mica.common.core.sdk.IPreferenceProvider;
+import org.maemo.mica.common.core.sdk.ISDKPlatform;
+import org.maemo.mica.common.core.sdk.ISDKTarget;
 import org.maemo.mica.common.core.sdk.commands.ICommandAbstractor;
 import org.maemo.mica.internal.api.common.core.sdk.BaseSDKPlatform;
 import org.maemo.mica.maemosdk.core.MaemoSDKEngine;
 import org.maemo.mica.maemosdk.core.MaemoSDKInfo;
 
-import java.util.*;
-
 public class Scratchbox1SDK extends AbstractScratchboxSDK implements
 		IScratchbox1SDK {
 
@@ -90,19 +105,37 @@
 	 */
 	public boolean createTarget(String targetName, String compiler,
 			String devkits, String cputransp) throws MicaException {
+		return createTarget(targetName, compiler, devkits, cputransp, false);
+	}
+
+	public boolean createTarget(String targetName, String compiler,
+			List<String> devkits, String cputransp,boolean force) throws MicaException {
+		String devkitsStr = "";
+		for(String dk : devkits){
+			if(devkitsStr.length()!=0)devkitsStr+= ":";
+			devkitsStr += dk;
+		}
+		return createTarget(targetName, compiler, devkitsStr, cputransp,force);
+	}
+	
+	protected boolean createTarget(String targetName, String compiler,
+			String devkits, String cputransp,boolean force) throws MicaException {
 		List<String> params = new ArrayList<String>();
 		params.add(targetName);
 		params.add(compiler);
 		params.add(devkits);
 		params.add(cputransp);
-
+		
 		CreateTargetCommand createTargetCommand = new CreateTargetCommand(this,
 				getCommandAbstractor());
 
 		CacheUtils.getInstance().setCachedValue(SB_TARGETS, null);
-		return (Boolean) createTargetCommand.performCommand(params);
+		if(force)
+			return (Boolean) createTargetCommand.forceCommand(params);
+		else
+			return (Boolean) createTargetCommand.performCommand(params);
 	}
-
+	
 	/*
 	 * (non-Javadoc)
 	 * 

Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/Scratchbox1SDKTarget.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -12,14 +12,20 @@
 
 import org.eclipse.core.runtime.IPath;
 import org.maemo.esbox.internal.api.scratchbox.core.sdk.AbstractScratchboxSDKTarget;
+import org.maemo.esbox.internal.scratchbox.sb1.command.CreateTargetCommand;
 import org.maemo.esbox.internal.scratchbox.sb1.command.GetGdbQemuCommandPatternCommand;
+import org.maemo.esbox.internal.scratchbox.sb1.command.ShowTargetCommand;
 import org.maemo.esbox.internal.scratchbox.sb1.launcher.Scratchbox1ProcessLauncherFactory;
+import org.maemo.esbox.scratchbox.core.scratchbox.ScratchboxTarget;
+import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDK;
+import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDKTarget;
 import org.maemo.mica.common.core.CorePreferenceConstants;
 import org.maemo.mica.common.core.MicaException;
 import org.maemo.mica.common.core.process.IProcessLauncherFactory;
 import org.maemo.mica.common.core.sdk.ISDKPlatform;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -28,9 +34,11 @@
  * @author baranov
  * 
  */
-public class Scratchbox1SDKTarget extends AbstractScratchboxSDKTarget {
+public class Scratchbox1SDKTarget extends AbstractScratchboxSDKTarget implements
+		IScratchbox1SDKTarget {
 
 	private IPath targetRoot;
+	private ScratchboxTarget targetInfo;
 
 	public Scratchbox1SDKTarget(Scratchbox1SDK sdk, ISDKPlatform platform,
 			String architecture, String target, IPath targetRoot) {
@@ -63,7 +71,8 @@
 	/*
 	 * (non-Javadoc)
 	 * 
-	 * @see org.maemo.mica.common.core.sdk.ISDKTarget#getProcessLauncherFactory()
+	 * @see
+	 * org.maemo.mica.common.core.sdk.ISDKTarget#getProcessLauncherFactory()
 	 */
 	public IProcessLauncherFactory getProcessLauncherFactory() {
 		return new Scratchbox1ProcessLauncherFactory(this, false);
@@ -92,4 +101,65 @@
 		arguments.add(architecture);
 		return command.performCommand(arguments);
 	}
+
+	public String getCompiler() throws MicaException {
+		return getTargetInfo().getCompiler();
+	}
+
+	public String getCputransp() throws MicaException {
+		return getTargetInfo().getCputransp();
+	}
+
+	public List<String> getDevkit() throws MicaException {
+		return getTargetInfo().getDevkits();
+	}
+
+	public boolean addDevkit(String newDevkit) throws MicaException {
+		IScratchbox1SDK sdk = (IScratchbox1SDK) this.getSDK();
+		List<String> possibleDK = sdk.getDevkits();
+		List<String> existingDK = this.getDevkit();
+		if (existingDK.contains(newDevkit))
+			return false;
+		else if (possibleDK.contains(newDevkit)) {
+			existingDK.add(newDevkit);
+			doAddDevkits(existingDK);
+			return true;
+		}
+		throw new MicaException("No such devkit: " + newDevkit);
+	}
+
+	public void addDevkits(List<String> newDevkits) throws MicaException {
+		IScratchbox1SDK sdk = (IScratchbox1SDK) this.getSDK();
+		List<String> possibleDK = sdk.getDevkits();
+		List<String> existingDK = this.getDevkit();
+		List<String> dtToAdd = new ArrayList<String>();
+		for (String devkit : newDevkits) {
+			if (possibleDK.contains(devkit) && !existingDK.contains(devkit)) {
+				dtToAdd.add(devkit);
+			}
+		}
+		dtToAdd.addAll(existingDK);
+		doAddDevkits(dtToAdd);
+	}
+
+	private void doAddDevkits(List<String> existingDK) throws MicaException {
+		IScratchbox1SDK sdk = (IScratchbox1SDK) this.getSDK();
+		sdk.createTarget(this.getName(), this.getCompiler(), existingDK, this
+				.getCputransp(), true);
+		this.refreshTargetInfo();
+	}
+
+	private ScratchboxTarget getTargetInfo() throws MicaException {
+		if (targetInfo == null) {
+			ShowTargetCommand showTargetCommand = new ShowTargetCommand(this
+					.getCommandAbstractor());
+			targetInfo = showTargetCommand.performCommand(Arrays.asList(this
+					.getName()));
+		}
+		return targetInfo;
+	}
+
+	private void refreshTargetInfo() {
+		targetInfo = null;
+	}
 }

Added: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapter.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapter.java	                        (rev 0)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapter.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia Corporation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Petr Baranov (Nokia) - initial API and implementation
+ *******************************************************************************/
+package org.maemo.esbox.internal.scratchbox.sb1.core.adapters;
+
+import java.util.List;
+
+import org.eclipse.core.runtime.IStatus;
+import org.maemo.esbox.internal.scratchbox.sb1.Activator;
+import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDKTarget;
+import org.maemo.mica.common.core.MicaException;
+import org.maemo.mica.common.core.adapters.ITargetConfiguratorAdapter;
+
+public class Sb1TargetConfigurationAdapter implements
+		ITargetConfiguratorAdapter {
+	private final IScratchbox1SDKTarget target;
+
+	public Sb1TargetConfigurationAdapter(IScratchbox1SDKTarget target) {
+		this.target = target;
+	}
+
+	public void addDevkits(List<String> newDevkit) {
+		try {
+			target.addDevkits(newDevkit);
+		} catch (MicaException e) {
+			Activator.getErrorLogger().log(IStatus.WARNING,
+					"Template requires nonexisting devkit.", e);
+		}
+	}
+
+	public boolean isTargetDevkit(String devkit) {
+		try {
+			return target.getDevkit().contains(devkit);
+		} catch (MicaException e) {
+			Activator.getErrorLogger().log(IStatus.WARNING,
+					"Template requires nonexisting devkit.", e);
+		}
+		return false;
+	}
+
+}

Added: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapterFactory.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapterFactory.java	                        (rev 0)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/internal/scratchbox/sb1/core/adapters/Sb1TargetConfigurationAdapterFactory.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Nokia Corporation
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *    Petr Baranov (Nokia) - initial API and implementation
+ *******************************************************************************/
+package org.maemo.esbox.internal.scratchbox.sb1.core.adapters;
+
+import org.eclipse.core.runtime.IAdapterFactory;
+import org.maemo.esbox.scratchbox.sb1.sdk.IScratchbox1SDKTarget;
+import org.maemo.mica.common.core.adapters.ITargetConfiguratorAdapter;
+
+public class Sb1TargetConfigurationAdapterFactory implements IAdapterFactory {
+
+	public Object getAdapter(Object adaptableObject, Class adapterType) {
+		if (adapterType.equals(ITargetConfiguratorAdapter.class)) {
+			if (adaptableObject instanceof IScratchbox1SDKTarget) {
+				return new Sb1TargetConfigurationAdapter(
+						(IScratchbox1SDKTarget) adaptableObject);
+			}
+		}
+		return null;
+	}
+
+	public Class[] getAdapterList() {
+		return new Class[] { ITargetConfiguratorAdapter.class };
+	}
+
+}

Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDK.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDK.java	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDK.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -71,4 +71,7 @@
 	 *             if some problem related to Scratchbox communication occurs.
 	 */
 	public boolean killProcess(String signal) throws MicaException;
+	
+	public boolean createTarget(String targetName, String compiler,
+			List<String> devkits, String cputransp, boolean force) throws MicaException;
 }

Modified: branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDKTarget.java
===================================================================
--- branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDKTarget.java	2008-11-25 23:37:10 UTC (rev 1002)
+++ branches/work_Petr/org.maemo.esbox.scratchbox.sb1/src/org/maemo/esbox/scratchbox/sb1/sdk/IScratchbox1SDKTarget.java	2008-11-26 13:58:55 UTC (rev 1003)
@@ -10,8 +10,20 @@
  *******************************************************************************/
 package org.maemo.esbox.scratchbox.sb1.sdk;
 
+import java.util.List;
+
 import org.maemo.esbox.scratchbox.core.sdk.IScratchboxSDKTarget;
+import org.maemo.mica.common.core.MicaException;
 
 public interface IScratchbox1SDKTarget extends IScratchboxSDKTarget {
 
+	String getCompiler() throws MicaException;
+
+	String getCputransp() throws MicaException;
+
+	List<String> getDevkit() throws MicaException;
+
+	boolean addDevkit(String newDevkits) throws MicaException;
+
+	public void addDevkits(List<String> newDevkits) throws MicaException;
 }



More information about the Esbox-commits mailing list