core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2QueryUtils.java
branchC3_BUILDER_WORK
changeset 1476 09e768e53db5
parent 1471 62024a5fa81d
child 1478 69015f2143b2
--- a/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2QueryUtils.java	Tue Jun 15 23:12:37 2010 -0500
+++ b/core/com.nokia.carbide.cpp.sdk.core/src/com/nokia/carbide/cpp/internal/api/sdk/sbsv2/SBSv2QueryUtils.java	Wed Jun 16 11:49:20 2010 -0500
@@ -54,58 +54,58 @@
 	public static final String QUERY_CONFIG_COMMAND = "--query=config";
 	public static final String QUERY_COMMAND = "--query=aliases";
 	
-	public static ISBSv2QueryData queryAliasAndProductVariants() {
-		List<String> argListConfigQuery = new ArrayList<String>();
-		List<String> argListProductQuery = new ArrayList<String>();
-		argListConfigQuery.add(QUERY_COMMAND);
-		SBSv2QueryData sbsQueryData = new SBSv2QueryData();
+	public static HashMap<String, String> getAliasesForSDK(ISymbianSDK sdk){
+		List<String> argListAliasQuery = new ArrayList<String>();
+		argListAliasQuery.add(QUERY_COMMAND);
 		
-		/////// Invoke Raptor once with no EPOCROOT
 		Properties envVars = EnvironmentReader.getEnvVars();
-		envVars.setProperty("EPOCROOT", "FOOBAR");
-		String queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
-	
-		HashMap<String, String> sbsAliasMap = parseQueryAliasResult(queryResult);
+		if (sdk != null){
+			envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+		} else {
+			envVars.setProperty("EPOCROOT", "FOOBAR");
+		}
+		
+		String queryResult = getSBSQueryOutput(argListAliasQuery, createEnvStringList(envVars));
 		
-		for (String aliasKey : sbsAliasMap.keySet()){
-			String meaning = sbsAliasMap.get(aliasKey);
-			SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey, meaning, null);
-			sbsQueryData.addConfigurationData(null, oneSBSConfig);
+		return parseQueryAliasResult(queryResult);
+	}
+	
+	public static List<String> getProductVariantsForSDK(ISymbianSDK sdk){
+		List<String> argListProductQuery = new ArrayList<String>();
+		
+		Properties envVars = EnvironmentReader.getEnvVars();
+		if (sdk != null){
+			envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+		} else {
+			envVars.setProperty("EPOCROOT", "FOOBAR");
 		}
 		
-		/////// Do for each SDK to build up the alias list...
-		for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()){
-			IPath epocRoot = new Path(sdk.getEPOCROOT());
-			if ((sdk.getOSVersion().getMajor() <= 9 && sdk.getOSVersion().getMinor() <5)
-				|| !epocRoot.toFile().exists()){
-				
-				continue; // skip it, the sdk is not supported or broken
-			}
-			
-			envVars = EnvironmentReader.getEnvVars();
-			envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
-			
-			queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
-			
-			sbsAliasMap = parseQueryAliasResult(queryResult);
-			
-			for (String aliasKey : sbsAliasMap.keySet()){
-				String meaning = sbsAliasMap.get(aliasKey);
-				SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey, meaning, sdk);
-				sbsQueryData.addConfigurationData(sdk, oneSBSConfig);
-			}
-			
-			// Now get the products for each SDK
-			argListProductQuery.add(QUERY_PRODUCTS_COMMAND);
-			queryResult = getSBSQueryOutput(argListProductQuery, createEnvStringList(envVars));
-			List<String> productList = parseQueryProductsResults(queryResult);
-			sbsQueryData.addProductListForSDK(sdk, productList);
+		argListProductQuery.add(QUERY_PRODUCTS_COMMAND);
+		String queryResult = getSBSQueryOutput(argListProductQuery, createEnvStringList(envVars));
+		return parseQueryProductsResults(queryResult);
+	}
+	
+	public static String getConfigQueryXML(ISymbianSDK sdk, List<String> aliasOrMeaningArray){
+		
+		List<String> argListConfigQuery = new ArrayList<String>();
+		
+		for (String alias : aliasOrMeaningArray){
+			argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
 		}
 		
-		return sbsQueryData;
+		Properties envVars = null;
+		if (sdk != null){
+			File epocRoot = new File(sdk.getEPOCROOT());
+			if (epocRoot.exists()){
+				envVars = EnvironmentReader.getEnvVars();
+				envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+			}
+		}
+		return getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
 	}
 	
-	public static HashMap<String, String> queryConfigTargetInfo(List<String> aliasOrMeaningArray, ISymbianSDK sdk){
+	
+	public static HashMap<String, String> queryConfigTargetInfo(ISymbianSDK sdk, List<String> aliasOrMeaningArray){
 		
 		List<String> argListConfigQuery = new ArrayList<String>();
 		
@@ -253,7 +253,7 @@
     			if (aliasNode.getNodeName().equals("config")){
     				NamedNodeMap meaning = aliasNode.getAttributes();
     				String outputpath = meaning.getNamedItem("outputpath").getNodeValue();
-    				String fullName = meaning.getNamedItem("fullname").getNodeValue();
+    				String fullName = meaning.getNamedItem("meaning").getNodeValue();
     				//System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
     				sbsAliasMap.put(fullName, outputpath);
     			}
@@ -286,7 +286,6 @@
     			if (aliasNode.getNodeName().equals("product")){
     				NamedNodeMap productAttribs = aliasNode.getAttributes();
     				String name = productAttribs.getNamedItem("name").getNodeValue();
-    				//System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
     				productList.add(name);
     			}
     		}
@@ -299,6 +298,41 @@
 		return productList;
 	}
 
+	public static ISBSv2QueryData queryFilteredConfigsForSDK(ISymbianSDK sdk) {
+		List<String> argListConfigQuery = new ArrayList<String>();
+		argListConfigQuery.add(QUERY_COMMAND);
+		SBSv2QueryData sbsQueryData = new SBSv2QueryData();
+		
+		IPath epocRoot = new Path(sdk.getEPOCROOT());
+		if ((sdk.getOSVersion().getMajor() <= 9 && sdk.getOSVersion()
+				.getMinor() < 5) || !epocRoot.toFile().exists()) {
+
+			return null; // skip it, the sdk is not supported or broken
+		}
+
+		Properties envVars = EnvironmentReader.getEnvVars();
+		envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
+
+		String queryResult = getSBSQueryOutput(argListConfigQuery,
+				createEnvStringList(envVars));
+
+		HashMap<String, String> sbsAliasMap = parseQueryAliasResult(queryResult);
+
+		List<String> aliasFilterList = SBSv2Utils.getSBSv2FilteredConfigs();
+		for (String aliasKey : sbsAliasMap.keySet()) {
+			
+			if (!aliasFilterList.contains(aliasKey))
+				continue;
+			
+			String meaning = sbsAliasMap.get(aliasKey);
+			SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey,
+					meaning, sdk);
+			sbsQueryData.addConfigurationData(sdk, oneSBSConfig);
+		}
+
+		return sbsQueryData;
+	}
+