// Path: src/util/PropUtil.java
// public class PropUtil {
// 
//     public static Properties LoadFromFile(Properties pProp, String sFile) {
//         try {
//             if (pProp == null) {
//                 pProp = new Properties();
//             }
//             if (sFile.endsWith(".xml")) {
//                 pProp.loadFromXML(new FileInputStream(sFile));
//             } else {
//                 pProp.load(new FileInputStream(sFile));
//             }
// 
//         } catch (Exception ex) {
//             //ex.printStackTrace();
//         }
//         return pProp;
//     }
// 
//     public static void SaveToFile(Properties pProp, String sFile, String sComment) {
//         try {
//             if (sFile.endsWith(".xml")) {
//                 pProp.storeToXML(new FileOutputStream(sFile), sComment);
//             } else {
//                 pProp.store(new FileOutputStream(sFile), sComment);
//             }
// 
//         } catch (Exception ex) {
//             // ex.printStackTrace();
//         }
//     }
// 
//     public static int GetInt(Properties pProp, String sKey, int iDefault) {
//         try {
//             return Integer.parseInt(pProp.getProperty(sKey, "").trim());
//         } catch (Exception ex) {
// 
//         }
//         return iDefault;
//     }
// 
//     public static long GetLong(Properties pProp, String sKey, long lDefault) {
//         try {
//             return Long.parseLong(pProp.getProperty(sKey, "").trim());
//         } catch (Exception ex) {
// 
//         }
//         return lDefault;
//     }
// 
//     public static double GetDouble(Properties pProp, String sKey, double lDefault) {
//         try {
//             return Double.parseDouble(pProp.getProperty(sKey, "").trim());
//         } catch (Exception ex) {
// 
//         }
//         return lDefault;
//     }
// 
//     public static String GetString(Properties pProp, String sKey, String sDefault) {
//         try {
//             return pProp.getProperty(sKey, sDefault);
//         } catch (Exception ex) {
//         }
//         return sDefault;
//     }
//     public static SimpleDateFormat sdfDate = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
// 
//     public static Date GetDate(Properties pProp, String sKey, Date dtDefault) {
//         Date dtRet;
//         try {
//             dtRet = sdfDate.parse(pProp.getProperty(sKey, ""));
//         } catch (Exception ex) {
//             dtRet = dtDefault;
//         }
//         return dtRet;
//     }
// 
//     public static void PrintProp(Properties pProp) {
// 
//         Enumeration sKeys = pProp.keys();
//         while (sKeys.hasMoreElements()) {
//             try {
//                 String sKey = (String) sKeys.nextElement();
//                 String sValue = (String) pProp.get(sKey);
//                 System.out.println(sKey + " : " + sValue);
// 
//             } catch (Exception ex) {
//                 // System.out.println(ex.getMessage());
//             }
//         }
//     }
// 
//     public static void SwitchKeyValue(Properties pInProp, Properties pOutProp) {
//         try {
//             if (pOutProp == null) {
//                 pOutProp = new Properties();
//             }
//             Enumeration sKeys = pInProp.keys();
//             while (sKeys.hasMoreElements()) {
//                 String sKey = (String) sKeys.nextElement();
//                 String sValue = (String) pInProp.get(sKey);
//                 pOutProp.put(sValue, sKey);
//                 // System.out.println(sKey + " : " + sValue);
//             }
//         } catch (Exception ex) {
//         }
//     }
// }


import com.sun.management.OperatingSystemMXBean;
import java.io.FileInputStream;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;
import javax.json.Json;
import javax.json.JsonNumber;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonString;
import javax.json.JsonValue;
import util.PropUtil;
import com.pi4j.system.SystemInfo;

                            logger.finest("Found value for " + prefix + '/' + name + ": " + ss);
                        }
                    }
                    logger.finest("Decomposed object " + prefix);
                } catch(Exception ex) {
                    logger.warning(ex.getMessage());
                }
            }
        } catch(Exception ex) {
            System.out.println("DataSet.decomposeObject.Error");
            logger.warning(ex.getMessage());
        }
    }
    
    @Override
    public void Initialize() {
        System.out.println("DataSet.Initialize");
        pDataSet = mmManager.getSharedData(sName);
        if(sAttributesFile.endsWith("json")) {
            try {
                JsonReader jsr = Json.createReader(new FileInputStream(sAttributesFile));
                JsonObject jso = jsr.readObject();
                decomposeObject("", jso);
            } catch(Exception ex) {
                System.out.println("DataSet.Initialize.Error");
                logger.warning(ex.getMessage());
            }
        } else {
            PropUtil.LoadFromFile(pDataSet, sAttributesFile);
        }

// Path: src/util/PropUtil.java
// public class PropUtil {
// 
//     public static Properties LoadFromFile(Properties pProp, String sFile) {
//         try {
//             if (pProp == null) {
//                 pProp = new Properties();
//             }
//             if (sFile.endsWith(".xml")) {
//                 pProp.loadFromXML(new FileInputStream(sFile));
//             } else {
//                 pProp.load(new FileInputStream(sFile));
//             }
// 
//         } catch (Exception ex) {
//             //ex.printStackTrace();
//         }
//         return pProp;
//     }
// 
//     public static void SaveToFile(Properties pProp, String sFile, String sComment) {
//         try {
//             if (sFile.endsWith(".xml")) {
//                 pProp.storeToXML(new FileOutputStream(sFile), sComment);
//             } else {
//                 pProp.store(new FileOutputStream(sFile), sComment);
//             }
// 
//         } catch (Exception ex) {
//             // ex.printStackTrace();
//         }
//     }
// 
//     public static int GetInt(Properties pProp, String sKey, int iDefault) {
//         try {
//             return Integer.parseInt(pProp.getProperty(sKey, "").trim());
//         } catch (Exception ex) {
// 
//         }
//         return iDefault;
//     }
// 
//     public static long GetLong(Properties pProp, String sKey, long lDefault) {
//         try {
//             return Long.parseLong(pProp.getProperty(sKey, "").trim());
//         } catch (Exception ex) {
// 
//         }
//         return lDefault;
//     }
// 
//     public static double GetDouble(Properties pProp, String sKey, double lDefault) {
//         try {
//             return Double.parseDouble(pProp.getProperty(sKey, "").trim());
//         } catch (Exception ex) {
// 
//         }
//         return lDefault;
//     }
// 
//     public static String GetString(Properties pProp, String sKey, String sDefault) {
//         try {
//             return pProp.getProperty(sKey, sDefault);
//         } catch (Exception ex) {
//         }
//         return sDefault;
//     }
//     public static SimpleDateFormat sdfDate = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
// 
//     public static Date GetDate(Properties pProp, String sKey, Date dtDefault) {
//         Date dtRet;
//         try {
//             dtRet = sdfDate.parse(pProp.getProperty(sKey, ""));
//         } catch (Exception ex) {
//             dtRet = dtDefault;
//         }
//         return dtRet;
//     }
// 
//     public static void PrintProp(Properties pProp) {
// 
//         Enumeration sKeys = pProp.keys();
//         while (sKeys.hasMoreElements()) {
//             try {
//                 String sKey = (String) sKeys.nextElement();
//                 String sValue = (String) pProp.get(sKey);
//                 System.out.println(sKey + " : " + sValue);
// 
//             } catch (Exception ex) {
//                 // System.out.println(ex.getMessage());
//             }
//         }
//     }
// 
//     public static void SwitchKeyValue(Properties pInProp, Properties pOutProp) {
//         try {
//             if (pOutProp == null) {
//                 pOutProp = new Properties();
//             }
//             Enumeration sKeys = pInProp.keys();
//             while (sKeys.hasMoreElements()) {
//                 String sKey = (String) sKeys.nextElement();
//                 String sValue = (String) pInProp.get(sKey);
//                 pOutProp.put(sValue, sKey);
//                 // System.out.println(sKey + " : " + sValue);
//             }
//         } catch (Exception ex) {
//         }
//     }
// }


// Path: src/modules/DataSet.java
import com.sun.management.OperatingSystemMXBean;
import java.io.FileInputStream;
import java.lang.management.ManagementFactory;
import java.net.InetAddress;
import java.net.NetworkInterface;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
import java.util.TimeZone;
import javax.json.Json;
import javax.json.JsonNumber;
import javax.json.JsonObject;
import javax.json.JsonReader;
import javax.json.JsonString;
import javax.json.JsonValue;
import util.PropUtil;
import com.pi4j.system.SystemInfo;

                            logger.finest("Found value for " + prefix + '/' + name + ": " + ss);
                        }
                    }
                    logger.finest("Decomposed object " + prefix);
                } catch(Exception ex) {
                    logger.warning(ex.getMessage());
                }
            }
        } catch(Exception ex) {
            System.out.println("DataSet.decomposeObject.Error");
            logger.warning(ex.getMessage());
        }
    }
    
    @Override
    public void Initialize() {
        System.out.println("DataSet.Initialize");
        pDataSet = mmManager.getSharedData(sName);
        if(sAttributesFile.endsWith("json")) {
            try {
                JsonReader jsr = Json.createReader(new FileInputStream(sAttributesFile));
                JsonObject jso = jsr.readObject();
                decomposeObject("", jso);
            } catch(Exception ex) {
                System.out.println("DataSet.Initialize.Error");
                logger.warning(ex.getMessage());
            }
        } else {
            PropUtil.LoadFromFile(pDataSet, sAttributesFile);
        }

        sSYSPrefix = PropUtil.GetString(pAttributes, "sSYSPrefix", "");
