components/visual-panels/core/src/java/vpanels/panel/com/oracle/solaris/vp/panel/common/smf/ServiceUtil.java
branchs11-update
changeset 3038 1a97ff5e830d
parent 2805 4888f6212f94
equal deleted inserted replaced
3037:ef46824e0e76 3038:1a97ff5e830d
    18  *
    18  *
    19  * CDDL HEADER END
    19  * CDDL HEADER END
    20  */
    20  */
    21 
    21 
    22 /*
    22 /*
    23  * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
    23  * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved.
    24  */
    24  */
    25 
    25 
    26 package com.oracle.solaris.vp.panel.common.smf;
    26 package com.oracle.solaris.vp.panel.common.smf;
    27 
    27 
    28 import java.text.DateFormat;
    28 import java.text.DateFormat;
    46     // Static methods
    46     // Static methods
    47     //
    47     //
    48 
    48 
    49     public static ADRName getServiceObjectName(
    49     public static ADRName getServiceObjectName(
    50 	String service, String instance) {
    50 	String service, String instance) {
    51 
    51 	Map<String, String> kvs = new HashMap<String, String>();
    52 	String namestr = String.format("%s:type=ServiceInfo,service=%s",
    52 	kvs.put("type", "ServiceInfo");
    53 	    SERVICE_DOMAIN, service);
    53 	kvs.put("service", service);
    54 	if (instance != null)
    54 	kvs.put("instance", instance == null ? "" : instance);
    55 	    namestr = String.format("%s,instance=%s", namestr, instance);
    55 	return (new ADRName(SERVICE_DOMAIN, kvs));
    56 
       
    57 	return (new ADRName(namestr));
       
    58     }
    56     }
    59 
    57 
    60     public static ADRName toADRName(String service, String instance) {
    58     public static ADRName toADRName(String service, String instance) {
    61 	try {
    59 	try {
    62 		return (getServiceObjectName(service, instance));
    60 		return (getServiceObjectName(service, instance));
    75 	    return (null);
    73 	    return (null);
    76 	}
    74 	}
    77     }
    75     }
    78 
    76 
    79     public static String toFMRI(ADRName an) {
    77     public static String toFMRI(ADRName an) {
    80 
    78 	String domain = an.getDomain();
    81 	String name = an.toString();
    79 	Map<String, String> kvs = an.getKVPairs();
    82 	String[] pieces = name.split(":", 2);
       
    83         String[] kvpairs = pieces[1].split(",");
       
    84 	String domain = pieces[0];
       
    85 
       
    86 	Map<String, String> kvs = new HashMap<String, String>();
       
    87 	for (String s : kvpairs) {
       
    88 		String[] kv = s.split("=");
       
    89 		kvs.put(kv[0], kv[1]);
       
    90 	}
       
    91 
       
    92 	String service = kvs.get("service");
    80 	String service = kvs.get("service");
    93 	String instance = kvs.get("instance");
    81 	String instance = kvs.get("instance");
    94 	if (!domain.equals(SERVICE_DOMAIN) || service == null)
    82 	if (!domain.equals(SERVICE_DOMAIN) || service == null)
    95 		throw new IllegalArgumentException("Not an SMF Object name");
    83 		throw new IllegalArgumentException("Not an SMF Object name");
    96 
    84 	return ("svc:/" + (instance.equals("") ?
    97 	return ("svc:/" + (instance == null ?
       
    98 	    service : service + ":" + instance));
    85 	    service : service + ":" + instance));
    99     }
    86     }
   100 
    87 
   101     public static String toService(ADRName an) {
    88     public static String toService(ADRName an) {
   102 
    89 	String domain = an.getDomain();
   103 	String name = an.toString();
    90 	Map<String, String> kvs = an.getKVPairs();
   104 	String[] pieces = name.split(":", 2);
    91 	String service = kvs.get("service");
   105 	String[] kvpairs = pieces[1].split(",");
       
   106 	String domain = pieces[0];
       
   107 	String service = null;
       
   108 
       
   109 	for (int i = 0; i < kvpairs.length; i++) {
       
   110 		if (kvpairs[i].startsWith("service=")) {
       
   111 			String[] kv = kvpairs[i].split("=");
       
   112 			service = kv[1];
       
   113 			break;
       
   114 		}
       
   115 	}
       
   116 
       
   117 	if (domain.equals(SERVICE_DOMAIN) && service != null)
    92 	if (domain.equals(SERVICE_DOMAIN) && service != null)
   118 		return service;
    93 		return service;
   119 	else
    94 	else
   120 		throw new IllegalArgumentException("Not an SMF Object name");
    95 		throw new IllegalArgumentException("Not an SMF Object name");
   121     }
    96     }