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
equal deleted inserted replaced
1474:f7fe29684b34 1476:09e768e53db5
    52 
    52 
    53 	public static final String QUERY_PRODUCTS_COMMAND = "--query=products";
    53 	public static final String QUERY_PRODUCTS_COMMAND = "--query=products";
    54 	public static final String QUERY_CONFIG_COMMAND = "--query=config";
    54 	public static final String QUERY_CONFIG_COMMAND = "--query=config";
    55 	public static final String QUERY_COMMAND = "--query=aliases";
    55 	public static final String QUERY_COMMAND = "--query=aliases";
    56 	
    56 	
    57 	public static ISBSv2QueryData queryAliasAndProductVariants() {
    57 	public static HashMap<String, String> getAliasesForSDK(ISymbianSDK sdk){
       
    58 		List<String> argListAliasQuery = new ArrayList<String>();
       
    59 		argListAliasQuery.add(QUERY_COMMAND);
       
    60 		
       
    61 		Properties envVars = EnvironmentReader.getEnvVars();
       
    62 		if (sdk != null){
       
    63 			envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
       
    64 		} else {
       
    65 			envVars.setProperty("EPOCROOT", "FOOBAR");
       
    66 		}
       
    67 		
       
    68 		String queryResult = getSBSQueryOutput(argListAliasQuery, createEnvStringList(envVars));
       
    69 		
       
    70 		return parseQueryAliasResult(queryResult);
       
    71 	}
       
    72 	
       
    73 	public static List<String> getProductVariantsForSDK(ISymbianSDK sdk){
       
    74 		List<String> argListProductQuery = new ArrayList<String>();
       
    75 		
       
    76 		Properties envVars = EnvironmentReader.getEnvVars();
       
    77 		if (sdk != null){
       
    78 			envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
       
    79 		} else {
       
    80 			envVars.setProperty("EPOCROOT", "FOOBAR");
       
    81 		}
       
    82 		
       
    83 		argListProductQuery.add(QUERY_PRODUCTS_COMMAND);
       
    84 		String queryResult = getSBSQueryOutput(argListProductQuery, createEnvStringList(envVars));
       
    85 		return parseQueryProductsResults(queryResult);
       
    86 	}
       
    87 	
       
    88 	public static String getConfigQueryXML(ISymbianSDK sdk, List<String> aliasOrMeaningArray){
       
    89 		
    58 		List<String> argListConfigQuery = new ArrayList<String>();
    90 		List<String> argListConfigQuery = new ArrayList<String>();
    59 		List<String> argListProductQuery = new ArrayList<String>();
    91 		
    60 		argListConfigQuery.add(QUERY_COMMAND);
    92 		for (String alias : aliasOrMeaningArray){
    61 		SBSv2QueryData sbsQueryData = new SBSv2QueryData();
    93 			argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
    62 		
    94 		}
    63 		/////// Invoke Raptor once with no EPOCROOT
    95 		
    64 		Properties envVars = EnvironmentReader.getEnvVars();
    96 		Properties envVars = null;
    65 		envVars.setProperty("EPOCROOT", "FOOBAR");
    97 		if (sdk != null){
    66 		String queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
    98 			File epocRoot = new File(sdk.getEPOCROOT());
    67 	
    99 			if (epocRoot.exists()){
    68 		HashMap<String, String> sbsAliasMap = parseQueryAliasResult(queryResult);
   100 				envVars = EnvironmentReader.getEnvVars();
    69 		
   101 				envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
    70 		for (String aliasKey : sbsAliasMap.keySet()){
       
    71 			String meaning = sbsAliasMap.get(aliasKey);
       
    72 			SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey, meaning, null);
       
    73 			sbsQueryData.addConfigurationData(null, oneSBSConfig);
       
    74 		}
       
    75 		
       
    76 		/////// Do for each SDK to build up the alias list...
       
    77 		for (ISymbianSDK sdk : SDKCorePlugin.getSDKManager().getSDKList()){
       
    78 			IPath epocRoot = new Path(sdk.getEPOCROOT());
       
    79 			if ((sdk.getOSVersion().getMajor() <= 9 && sdk.getOSVersion().getMinor() <5)
       
    80 				|| !epocRoot.toFile().exists()){
       
    81 				
       
    82 				continue; // skip it, the sdk is not supported or broken
       
    83 			}
   102 			}
    84 			
   103 		}
    85 			envVars = EnvironmentReader.getEnvVars();
   104 		return getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
    86 			envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
   105 	}
    87 			
   106 	
    88 			queryResult = getSBSQueryOutput(argListConfigQuery, createEnvStringList(envVars));
   107 	
    89 			
   108 	public static HashMap<String, String> queryConfigTargetInfo(ISymbianSDK sdk, List<String> aliasOrMeaningArray){
    90 			sbsAliasMap = parseQueryAliasResult(queryResult);
       
    91 			
       
    92 			for (String aliasKey : sbsAliasMap.keySet()){
       
    93 				String meaning = sbsAliasMap.get(aliasKey);
       
    94 				SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey, meaning, sdk);
       
    95 				sbsQueryData.addConfigurationData(sdk, oneSBSConfig);
       
    96 			}
       
    97 			
       
    98 			// Now get the products for each SDK
       
    99 			argListProductQuery.add(QUERY_PRODUCTS_COMMAND);
       
   100 			queryResult = getSBSQueryOutput(argListProductQuery, createEnvStringList(envVars));
       
   101 			List<String> productList = parseQueryProductsResults(queryResult);
       
   102 			sbsQueryData.addProductListForSDK(sdk, productList);
       
   103 		}
       
   104 		
       
   105 		return sbsQueryData;
       
   106 	}
       
   107 	
       
   108 	public static HashMap<String, String> queryConfigTargetInfo(List<String> aliasOrMeaningArray, ISymbianSDK sdk){
       
   109 		
   109 		
   110 		List<String> argListConfigQuery = new ArrayList<String>();
   110 		List<String> argListConfigQuery = new ArrayList<String>();
   111 		
   111 		
   112 		for (String alias : aliasOrMeaningArray){
   112 		for (String alias : aliasOrMeaningArray){
   113 			argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
   113 			argListConfigQuery.add(QUERY_CONFIG_COMMAND + "[" + alias + "]");
   251     		for (int i=0; i< children.getLength(); i++) {
   251     		for (int i=0; i< children.getLength(); i++) {
   252     			Node aliasNode = children.item(i);
   252     			Node aliasNode = children.item(i);
   253     			if (aliasNode.getNodeName().equals("config")){
   253     			if (aliasNode.getNodeName().equals("config")){
   254     				NamedNodeMap meaning = aliasNode.getAttributes();
   254     				NamedNodeMap meaning = aliasNode.getAttributes();
   255     				String outputpath = meaning.getNamedItem("outputpath").getNodeValue();
   255     				String outputpath = meaning.getNamedItem("outputpath").getNodeValue();
   256     				String fullName = meaning.getNamedItem("fullname").getNodeValue();
   256     				String fullName = meaning.getNamedItem("meaning").getNodeValue();
   257     				//System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
   257     				//System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
   258     				sbsAliasMap.put(fullName, outputpath);
   258     				sbsAliasMap.put(fullName, outputpath);
   259     			}
   259     			}
   260     		}
   260     		}
   261     		
   261     		
   284     		for (int i=0; i< children.getLength(); i++) {
   284     		for (int i=0; i< children.getLength(); i++) {
   285     			Node aliasNode = children.item(i);
   285     			Node aliasNode = children.item(i);
   286     			if (aliasNode.getNodeName().equals("product")){
   286     			if (aliasNode.getNodeName().equals("product")){
   287     				NamedNodeMap productAttribs = aliasNode.getAttributes();
   287     				NamedNodeMap productAttribs = aliasNode.getAttributes();
   288     				String name = productAttribs.getNamedItem("name").getNodeValue();
   288     				String name = productAttribs.getNamedItem("name").getNodeValue();
   289     				//System.out.println("ALIAS QUERY ==> " + dottedName + " <==> " + alias);
       
   290     				productList.add(name);
   289     				productList.add(name);
   291     			}
   290     			}
   292     		}
   291     		}
   293     		
   292     		
   294     	} catch (Exception e) {
   293     	} catch (Exception e) {
   297     	}
   296     	}
   298 		
   297 		
   299 		return productList;
   298 		return productList;
   300 	}
   299 	}
   301 
   300 
       
   301 	public static ISBSv2QueryData queryFilteredConfigsForSDK(ISymbianSDK sdk) {
       
   302 		List<String> argListConfigQuery = new ArrayList<String>();
       
   303 		argListConfigQuery.add(QUERY_COMMAND);
       
   304 		SBSv2QueryData sbsQueryData = new SBSv2QueryData();
       
   305 		
       
   306 		IPath epocRoot = new Path(sdk.getEPOCROOT());
       
   307 		if ((sdk.getOSVersion().getMajor() <= 9 && sdk.getOSVersion()
       
   308 				.getMinor() < 5) || !epocRoot.toFile().exists()) {
       
   309 
       
   310 			return null; // skip it, the sdk is not supported or broken
       
   311 		}
       
   312 
       
   313 		Properties envVars = EnvironmentReader.getEnvVars();
       
   314 		envVars.setProperty("EPOCROOT", sdk.getEPOCROOT());
       
   315 
       
   316 		String queryResult = getSBSQueryOutput(argListConfigQuery,
       
   317 				createEnvStringList(envVars));
       
   318 
       
   319 		HashMap<String, String> sbsAliasMap = parseQueryAliasResult(queryResult);
       
   320 
       
   321 		List<String> aliasFilterList = SBSv2Utils.getSBSv2FilteredConfigs();
       
   322 		for (String aliasKey : sbsAliasMap.keySet()) {
       
   323 			
       
   324 			if (!aliasFilterList.contains(aliasKey))
       
   325 				continue;
       
   326 			
       
   327 			String meaning = sbsAliasMap.get(aliasKey);
       
   328 			SBSv2ConfigData oneSBSConfig = new SBSv2ConfigData(aliasKey,
       
   329 					meaning, sdk);
       
   330 			sbsQueryData.addConfigurationData(sdk, oneSBSConfig);
       
   331 		}
       
   332 
       
   333 		return sbsQueryData;
       
   334 	}
       
   335 
   302 	
   336 	
   303 	
   337 	
   304 	
   338 	
   305 }
   339 }