package org.tizen.dynamicanalyzer.ui.file;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
int fileId = 0;
// 1. get accessorlist from data maker
- List<FileAccessor> accessorList = dataMaker.getFileAccessor();
- if (accessorList == null) {
- if(dataMaker.getFileAccessorList() != null) {
- accessorList = dataMaker.getFileAccessorList();
- }else {
- return;
- }
+ List<FileAccessor> accessorList = dataMaker.getFileAccessorList();
+ if(accessorList == null) {
+ return;
}
-
+
+ Collections.sort(accessorList, new AccessorCompare());
+
for (FileAccessor accessor : accessorList) {
filePath = accessor.getFilePath();
fileId = accessor.getFileId();
public int getChartSize() {
return chartList.size();
}
+
+ static class AccessorCompare implements Comparator<FileAccessor> {
+ @Override
+ public int compare(FileAccessor arg0, FileAccessor arg1) {
+ // TODO Auto-generated method stub
+ return arg0.getAccessorId() < arg1.getAccessorId() ?
+ -1 : arg0.getAccessorId() > arg1.getAccessorId() ? 1:0;
+ }
+ }
}
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
private List<FileStatus> fileStatusList = new ArrayList<FileStatus>();
private List<FileAccess> fileAccessList = new ArrayList<FileAccess>();
private List<FileEvent> fileApiList = new ArrayList<FileEvent>();
- private List<FileAccessor> fileAccessorList = new ArrayList<FileAccessor>();
-
+ private List<FileAccessor> fileAccessorList = Collections.synchronizedList(new ArrayList<FileAccessor>());
+
// to match entry and exit message
private Map<Long, FileEvent> entryMap = new HashMap<Long, FileEvent>();
private Map<String, List<Object>> fileAccessorMap = new HashMap<String, List<Object>>();
-
+
// to find file path
private Map<String, List<Object>> filePathMap = new HashMap<String, List<Object>>();
- private Queue<List<FileAccessor>> fileAccessorQueue = new ConcurrentLinkedQueue<List<FileAccessor>>();
// to auto release
private Map<List<Integer>, List<Integer>> accessorHasLockMap = new HashMap<List<Integer>, List<Integer>>();
fileApiList.clear();
fileAccessorList.clear();
fileAccessorMap.clear();
- fileAccessorQueue.clear();
filePathMap.clear();
accessorHasLockMap.clear();
concurrentAccessNumMap.clear();
// files
Logs sysLogs = pack.getLogs(ProtocolConstants.MSG_FUNCTION_ENTRY_EXIT);
processSysData(sysLogs, fileEventList);
-
- // insert to DB: file API Table
- if (fileEventList.size() > 0) {
- for (FileEvent data : fileEventList) {
- fileApiList.add(data.getDBData());
- }
- FileDataManager.getInstance().getApiDB().insert((List<List<Object>>) fileApiList);
- }
-
- Set<String> kyeSet = fileAccessorMap.keySet();
- for (Iterator<String> iterator = kyeSet.iterator(); iterator.hasNext();) {
- String key = (String) iterator.next();
- List<Object> values = fileAccessorMap.get(key);
- Object[] list = values.toArray();
- List<FileAccessor> accessor = (ArrayList<FileAccessor>) list[1];
- fileAccessorList.addAll(accessor);
- }
- fileAccessorQueue.add(fileAccessorList);
+
}
addFileEvent(fileEventList, event, input);
}
+
+ saveFileAccessors(fileEventList);
}
}
break;
}
}
+
+ saveFileAccessors(fileEventList);
+
}
}
+ public void saveFileAccessors(List<FileEvent> fileEventList) {
+ ArrayList<List<Object>> fileApiList = new ArrayList<List<Object>>();
+
+ if (fileEventList.size() > 0) {
+ for (FileEvent data : fileEventList) {
+ fileApiList.add(data.getDBData());
+ }
+ FileDataManager.getInstance().getApiDB().insert((List<List<Object>>) fileApiList);
+ }
+
+ fileAccessorList.clear();
+ for(String key : fileAccessorMap.keySet()){
+ List<Object> values = fileAccessorMap.get(key);
+ Object[] list = values.toArray();
+ fileAccessorList.addAll((ArrayList<FileAccessor>) list[1]);
+ }
+ }
/**
* Add FileEvent list into eventList
return false;
}
- public List<FileAccessor> getFileAccessor() {
- return fileAccessorQueue.poll();
- }
-
public List<FileAccess> getFileAccessList() {
return fileAccessList;
}
public void setFileAccessorList(List<FileAccessor> fileAccessorList) {
this.fileAccessorList = fileAccessorList;
}
-
}
\ No newline at end of file