* Copyright (c) 2000 - 2011 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
- * Jooyoul Lee <jy.exe.lee@samsung.com>
+ * Jaewon Lim <jaewon81.lim@samsung.com>
* Juyoung Kim <j0.kim@samsung.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.Map;
+
import org.tizen.dynamicanalyzer.common.AnalyzerConstants;
import org.tizen.dynamicanalyzer.common.AnalyzerManager;
import org.tizen.dynamicanalyzer.common.GlobalInformation;
import org.tizen.dynamicanalyzer.communicator.DACommunicator;
import org.tizen.dynamicanalyzer.constant.CommonConstants;
import org.tizen.dynamicanalyzer.database.SqlConnectionManager;
-import org.tizen.dynamicanalyzer.handlers.ReplayTraceHandler;
import org.tizen.dynamicanalyzer.model.DeviceInfo;
import org.tizen.dynamicanalyzer.sql.SqlManager;
-import org.tizen.dynamicanalyzer.swap.channel.data.DataChannelConstants;
import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfo;
import org.tizen.dynamicanalyzer.swap.channel.data.ProcessInfoPackage;
import org.tizen.dynamicanalyzer.swap.logparser.DataManagerRegistry;
import org.tizen.dynamicanalyzer.swap.model.DATime;
import org.tizen.dynamicanalyzer.ui.toolbar.ToolbarArea;
-import org.tizen.dynamicanalyzer.util.ByteUtil;
import org.tizen.dynamicanalyzer.util.CommonUtil;
import org.tizen.dynamicanalyzer.util.DALogger;
// public static final String TABLE_NAME = "project";
private static final DALogger DA_LOG = DALogger.getInstance();
- private static final String VERSION = "version";
- private static final String PROTOCOL_VERSION = "protocolVersion";
- private static final String DEVICE = "device";
- private static final String PACKAGE_ID = "pakID";
- private static final String APP_NAME = "appName";
- private static final String CREATE_TIME = "createTime";
- private static final String LAST_TIME = "lastTime";
- private static final String STOP_TIME = "stopTime";
- private static final String PROF_START_TIME = "profStatTime";
- private static final String LOG_COUNT = "logCount";
- private static final String SYSTEM_COUNT = "systemCount";
- private static final String PROFILE_COUNT = "profileCount";
- private static final String SAVE_PATH = "savePath";
- private static final String MAIN_PID = "mainPID";
-
- private final static int MAX_FILENAME_LENGTH = 50;
- private final static String DEFAULT_TIME_FORMAT = "_yyyy-MM-dd-HH-mm-ss";//$NON-NLS-1$
+ private static final int MAX_FILENAME_LENGTH = 50;
+ private static final String DEFAULT_TIME_FORMAT = "_yyyy-MM-dd-HH-mm-ss";//$NON-NLS-1$
- private long logCount_Total = 0;
- private long logCount_System = 0;
- private long logCount_Profile = 0;
+ private static final String VERSION = "Version";
+ private static final String PROTOCOL_VERSION = "ProtocolVersion";
+ private static final String DEVICE = "Device";
+ private static final String PACKAGE_ID = "PKGID";
+ private static final String APP_NAME = "AppName";
+ private static final String CREATE_TIME = "CreateTime";
+ private static final String TOTAL_STOP_TIME = "TotalStopTime";
+ private static final String REPLAY_STOP_TIME = "ReplayStopTime";
+ private static final String PROF_START_TIME = "ProfStartTime";
+ private static final String SAVE_PATH = "SavePath";
- private byte[] replayEvent = null;
+ private Map<String, String> projectProperties = new HashMap<String, String>();
- private HashMap<String, String> projectInfoMap = new HashMap<String, String>();
+ private Map<Integer, ProcessInfoPackage> processInfoPackageMap = new HashMap<Integer, ProcessInfoPackage>();
- private HashMap<Integer, ProcessInfoPackage> processInfoPackageMap = new HashMap<Integer, ProcessInfoPackage>();
+ // for performance
+ private DATime profileStartTimeCache = null;
public ProcessInfoPackage getProcessInfoPackage(int pid) {
return processInfoPackageMap.get(pid);
}
public void setVersion(String ver) {
- projectInfoMap.put(VERSION, ver);
+ projectProperties.put(VERSION, ver);
}
public String getVersion() {
- return projectInfoMap.get(VERSION);
+ return projectProperties.get(VERSION);
}
public void setDevice(String dev) {
- projectInfoMap.put(DEVICE, dev);
+ projectProperties.put(DEVICE, dev);
}
public String getDevice() {
- return projectInfoMap.get(DEVICE);
+ return projectProperties.get(DEVICE);
}
public void setPkgId(String pkgId) {
- projectInfoMap.put(PACKAGE_ID, pkgId);
+ projectProperties.put(PACKAGE_ID, pkgId);
}
public String getPkgId() {
- return projectInfoMap.get(PACKAGE_ID);
+ return projectProperties.get(PACKAGE_ID);
}
public void setAppName(String name) {
- projectInfoMap.put(APP_NAME, name);
+ projectProperties.put(APP_NAME, name);
}
public String getAppName() {
- return projectInfoMap.get(APP_NAME);
+ return projectProperties.get(APP_NAME);
}
public void setCreateTime(String createTime) {
- projectInfoMap.put(CREATE_TIME, createTime);
+ projectProperties.put(CREATE_TIME, createTime);
}
public String getCreateTime() {
- return projectInfoMap.get(CREATE_TIME);
+ return projectProperties.get(CREATE_TIME);
}
- public void setLastTime(long lastTime) {
- projectInfoMap.put(LAST_TIME, Long.toString(lastTime));
+ public void setTotalStopTime(long lastTime) {
+ projectProperties.put(TOTAL_STOP_TIME, Long.toString(lastTime));
}
- public long getLastTime() {
- String last_time = projectInfoMap.get(LAST_TIME);
+ public long getTotalStopTime() {
+ String last_time = projectProperties.get(TOTAL_STOP_TIME);
if (last_time != null && !last_time.isEmpty())
return Long.parseLong(last_time);
else
return 0;
}
- public void setStopTime(long time) {
- projectInfoMap.put(STOP_TIME, Long.toString(time));
+ public void setReplayStopTime(long time) {
+ projectProperties.put(REPLAY_STOP_TIME, Long.toString(time));
}
- public long getStopTime() {
- String stoptime = projectInfoMap.get(STOP_TIME);
+ public long getReplayStopTime() {
+ String stoptime = projectProperties.get(REPLAY_STOP_TIME);
if (stoptime != null && !stoptime.isEmpty())
return Long.parseLong(stoptime);
else
}
public void setProfileStartTime(DATime time) {
- projectInfoMap.put(PROF_START_TIME, time.toString());
+ projectProperties.put(PROF_START_TIME, time.toString());
System.out.printf("profile starttime : %d\n", time.getSec());
}
public DATime getProfileStartTime() {
- String profstarttime = projectInfoMap.get(PROF_START_TIME);
- if (profstarttime != null && !profstarttime.isEmpty())
- return new DATime(profstarttime);
- else
- return new DATime();
- }
-
- // TODO (greatim) : last number means log count ? i don't think so
- public void setLastLogNum(long last, int type) {
- if (type == DataChannelConstants.MSG_DATA_SYSTEM) {
- if (last > logCount_System) {
- logCount_System = last;
- }
- } else if (type == DataChannelConstants.MSG_DATA_SAMPLE) {
- if (last > logCount_Profile) {
- logCount_Profile = last;
- }
- } else {
- if (last > logCount_Total) {
- logCount_Total = last;
+ if (profileStartTimeCache == null) {
+ // this synchronized block is not perfect but it is enough to cache.
+ synchronized (this) {
+ String profstarttime = projectProperties.get(PROF_START_TIME);
+ if (profstarttime != null && !profstarttime.isEmpty())
+ profileStartTimeCache = new DATime(profstarttime);
+ else
+ profileStartTimeCache = new DATime();
}
}
- }
-
- public long getLogCount() {
- return logCount_Total;
- }
- public long getDeviceLogCount() {
- return logCount_System;
- }
-
- public long getProfileLogCount() {
- return logCount_Profile;
+ return profileStartTimeCache;
}
public void setSavePath(String path) {
- projectInfoMap.put(SAVE_PATH, path);
+ projectProperties.put(SAVE_PATH, path);
}
public String getSavePath() {
- return projectInfoMap.get(SAVE_PATH);
- }
-
- public void setMainPid(int mainPid) {
- projectInfoMap.put(MAIN_PID, Integer.toString(mainPid));
- }
-
- public int getMainPid() {
- String mainpid = projectInfoMap.get(MAIN_PID);
- if (mainpid != null && !mainpid.isEmpty())
- return Integer.parseInt(mainpid);
- else
- return -1;
+ return projectProperties.get(SAVE_PATH);
}
public double getProtocolVersion() {
- String protocolVer = projectInfoMap.get(PROTOCOL_VERSION);
+ String protocolVer = projectProperties.get(PROTOCOL_VERSION);
if (protocolVer != null && !protocolVer.isEmpty())
return Double.parseDouble(protocolVer);
else
}
public void setProtocolVersion(double protocolVersion) {
- projectInfoMap.put(PROTOCOL_VERSION, Double.toString(protocolVersion));
+ projectProperties.put(PROTOCOL_VERSION,
+ Double.toString(protocolVersion));
}
public void setCoreCount(int count) {
.getSystemMemorySize();
}
- // for save
- public String getLastLogNumbers() {
- StringBuffer buffer = new StringBuffer();
- buffer.append(getLogCount());
- buffer.append("|");
- buffer.append(getDeviceLogCount());
- buffer.append("|");
- buffer.append(getProfileLogCount());
- return buffer.toString();
- }
-
public void init() {
if (null == GlobalInformation.getCurrentApplication()) {
String comboText = ToolbarArea.getInstance().getAppCombo()
DataManagerRegistry.createDBTables();
SqlManager.getInstance().createTables();
SqlManager.getInstance().createProbeTable();
-
- // create replay data
- if (ReplayTraceHandler.isReplay) {
- replayEvent = ReplayTraceHandler.getReplayEvent();
- } else {
- replayEvent = ByteUtil.getByte(ReplayTraceHandler.REPLAY_OFF);
- }
}
public boolean isValid() {
return processInfo.getHighestAddress();
}
- /*
- * public void setTotalProfilingSampleCount(int count) {
- * FunctionUsageProfiler.getInstance().getProfileDataMaker()
- * .setTotalSampleCount(count); }
- *
- * public int getTotalProfilingSampleCount() { return
- * FunctionUsageProfiler.getInstance().getProfileDataMaker()
- * .getTotalSampleCount(); }
- */
- public byte[] getReplayEvent() {
- return replayEvent;
- }
-
- public HashMap<Integer, ProcessInfoPackage> getProcessInfoPackHash() {
+ public Map<Integer, ProcessInfoPackage> getProcessInfoPackHash() {
return processInfoPackageMap;
}
setPkgId(data.get(AnalyzerConstants.PROJECT_PACKAGE_ID_INDEX));
setAppName(data.get(AnalyzerConstants.PROJECT_APP_NAME_INDEX));
setCreateTime(data.get(AnalyzerConstants.PROJECT_CREATE_TIME_INDEX));
- setLastTime(Long.parseLong(data
+ setTotalStopTime(Long.parseLong(data
.get(AnalyzerConstants.PROJECT_LAST_TIME_INDEX)));
- setStopTime(Long.parseLong(data
+ setReplayStopTime(Long.parseLong(data
.get(AnalyzerConstants.PROJECT_STOP_TIME_INDEX)));
DATime profilingStartTime = new DATime();
profilingStartTime.fromString(data
.get(AnalyzerConstants.PROJECT_PROF_START_TIME_INDEX));
setProfileStartTime(profilingStartTime);
-
- logCount_Total = Long.parseLong(data
- .get(AnalyzerConstants.PROJECT_LOG_COUNT_INDEX));
- logCount_System = Long.parseLong(data
- .get(AnalyzerConstants.PROJECT_SYSTEM_COUNT_INDEX));
- logCount_Profile = Long.parseLong(data
- .get(AnalyzerConstants.PROJECT_PROFILE_COUNT_INDEX));
- setMainPid(Integer.parseInt(data
- .get(AnalyzerConstants.PROJECT_MAIN_PID_INDEX)));
}
public List<String> makeSaveProjectInfo() {
projectInfoDBList.add(getPkgId());
projectInfoDBList.add(getAppName());
projectInfoDBList.add(getCreateTime());
- projectInfoDBList.add(Long.toString(getLastTime()));
- projectInfoDBList.add(Long.toString(getStopTime()));
+ projectInfoDBList.add(Long.toString(getTotalStopTime()));
+ projectInfoDBList.add(Long.toString(getReplayStopTime()));
projectInfoDBList.add(getProfileStartTime().toString());
- projectInfoDBList.add(Long.toString(getLogCount()));
- projectInfoDBList.add(Long.toString(getDeviceLogCount()));
- projectInfoDBList.add(Long.toString(getProfileLogCount()));
projectInfoDBList.add(getSavePath());
- projectInfoDBList.add(Integer.toString(getMainPid()));
-
- projectInfoMap.put(LOG_COUNT, Long.toString(getLogCount()));
- projectInfoMap.put(SYSTEM_COUNT, Long.toString(getDeviceLogCount()));
- projectInfoMap.put(PROFILE_COUNT, Long.toString(getProfileLogCount()));
return projectInfoDBList;
}
buffWriter = new BufferedWriter(fileWriter);
printWriter = new PrintWriter(buffWriter);
- Iterator<String> iter = projectInfoMap.keySet().iterator();
+ Iterator<String> iter = projectProperties.keySet().iterator();
while (iter.hasNext()) {
String key = (String) iter.next();
- String val = projectInfoMap.get(key);
+ String val = projectProperties.get(key);
printWriter.println(key + CommonConstants.EQUAL + val);
printWriter.checkError();
}
setAppName(val);
} else if (infoKey.equals(CREATE_TIME)) {
setCreateTime(val);
- } else if (infoKey.equals(LAST_TIME)) {
- setLastTime(Long.parseLong(val));
- } else if (infoKey.equals(STOP_TIME)) {
- setStopTime(Long.parseLong(val));
+ } else if (infoKey.equals(TOTAL_STOP_TIME)) {
+ setTotalStopTime(Long.parseLong(val));
+ } else if (infoKey.equals(REPLAY_STOP_TIME)) {
+ setReplayStopTime(Long.parseLong(val));
} else if (infoKey.equals(PROF_START_TIME)) {
DATime profilingStartTime = new DATime();
profilingStartTime.fromString(val);
setProfileStartTime(profilingStartTime);
- } else if (infoKey.equals(LOG_COUNT)) {
- logCount_Total = Long.parseLong(val);
- } else if (infoKey.equals(SYSTEM_COUNT)) {
- logCount_System = Long.parseLong(val);
- } else if (infoKey.equals(PROFILE_COUNT)) {
- logCount_Profile = Long.parseLong(val);
} else if (infoKey.equals(SAVE_PATH)) {
setSavePath(val);
- } else if (infoKey.equals(MAIN_PID)) {
- setMainPid(Integer.parseInt(val));
}
}
}