package cn.lin.qm.service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import cn.lin.qm.domain.ClientFigure;
import cn.lin.qm.domain.Dim;
import cn.lin.qm.domain.DimDetail;
public class Test {
public static CountDownLatch awaits = new CountDownLatch(2);
public static void main(String[] args) {
List<DimDetail> lists = new ArrayList<DimDetail>();
DimDetail d = null;
for (int i = 0;i<100;i++){
String s = i % 2 == 0 ? "0" : "1";
d = new DimDetail();
d.setProfileId("1000"+s);
d.setProfileName("profileName"+s);
d.setPropertyId("40000"+i);
d.setPropertyName("propertyName");
d.setDimFlag(i % 2 == 0 ? "0" : "1");
//System.out.println(d.getProfileId());
lists.add(d);
}
final Map<String,List<DimDetail>> map = getTypeMap(lists);
Executors.newSingleThreadExecutor().execute(new Runnable(){
@Override
public void run() {
List<DimDetail> hasDims = map.get("1");
for (int i = 0;i<hasDims.size();i++){
hasDims.get(i).setDimValue("dimValue"+i+Thread.currentThread().getId());
}
System.out.println("有维度的数据值查询结束,正在等待中---------------");
awaits.countDown();
}
});
List<DimDetail> noDims = map.get("0");
for (int i = 0;i<noDims.size();i++){
noDims.get(i).setDataDate("dataDate"+i);
}
for (int i = 0;i<noDims.size();i++){
noDims.get(i).setDimValue("dimValue"+i+Thread.currentThread().getId());
}
System.out.println("无维度的数据值查询结束====================================");
awaits.countDown();
lists.clear();
//List<DimDetail> allValues = new ArrayList<DimDetail>();
lists.addAll(map.get("0"));
lists.addAll(map.get("1"));
for (DimDetail dim : lists){
System.out.println(dim.getDimFlag()+"==="+dim.getDimValue());
}
List<ClientFigure> figures = convert(lists);
System.out.println(figures.size());
}
private static Map<String,List<DimDetail>> getTypeMap(List<DimDetail> lists){
Map<String,List<DimDetail>> result = new HashMap<String,List<DimDetail>>();
List<DimDetail> noDim = new ArrayList<DimDetail>();
List<DimDetail> hasDim = new ArrayList<DimDetail>();
for (DimDetail dim : lists){
if (dim.getDimFlag().equals("0")){
noDim.add(dim);
}else{
hasDim.add(dim);
}
}
result.put("0", noDim);
result.put("1", hasDim);
return result;
}
private static List<ClientFigure> convert(List<DimDetail> lists){
Map<String,List<Dim>> result = new HashMap<String,List<Dim>>();
List<ClientFigure> figures = new ArrayList<ClientFigure>();
ClientFigure f = null;
String temp = "";
List<Dim> dimsList = null;
for (int i = 0;i<lists.size();i++){
temp = lists.get(i).getProfileName()+"-"+lists.get(i).getProfileId();
if (result.containsKey(temp)){
continue;
}
f = new ClientFigure();
f.setProfileId(lists.get(i).getProfileId());
f.setProfileName(lists.get(i).getProfileName());
dimsList = new ArrayList<Dim>();
for (int j = 0;j<lists.size();j++){
Dim dim = new Dim();
if (lists.get(i).getProfileId().equals(lists.get(j).getProfileId())){
dim.setPropertyId(lists.get(j).getPropertyId());
dim.setPropertyName(lists.get(j).getPropertyName());
dim.setProValue(lists.get(j).getDimValue());
dimsList.add(dim);
}
}
result.put(temp, dimsList);
f.setDims(dimsList);
figures.add(f);
}
result.clear();
return figures;
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import cn.lin.qm.domain.ClientFigure;
import cn.lin.qm.domain.Dim;
import cn.lin.qm.domain.DimDetail;
public class Test {
public static CountDownLatch awaits = new CountDownLatch(2);
public static void main(String[] args) {
List<DimDetail> lists = new ArrayList<DimDetail>();
DimDetail d = null;
for (int i = 0;i<100;i++){
String s = i % 2 == 0 ? "0" : "1";
d = new DimDetail();
d.setProfileId("1000"+s);
d.setProfileName("profileName"+s);
d.setPropertyId("40000"+i);
d.setPropertyName("propertyName");
d.setDimFlag(i % 2 == 0 ? "0" : "1");
//System.out.println(d.getProfileId());
lists.add(d);
}
final Map<String,List<DimDetail>> map = getTypeMap(lists);
Executors.newSingleThreadExecutor().execute(new Runnable(){
@Override
public void run() {
List<DimDetail> hasDims = map.get("1");
for (int i = 0;i<hasDims.size();i++){
hasDims.get(i).setDimValue("dimValue"+i+Thread.currentThread().getId());
}
System.out.println("有维度的数据值查询结束,正在等待中---------------");
awaits.countDown();
}
});
List<DimDetail> noDims = map.get("0");
for (int i = 0;i<noDims.size();i++){
noDims.get(i).setDataDate("dataDate"+i);
}
for (int i = 0;i<noDims.size();i++){
noDims.get(i).setDimValue("dimValue"+i+Thread.currentThread().getId());
}
System.out.println("无维度的数据值查询结束====================================");
awaits.countDown();
lists.clear();
//List<DimDetail> allValues = new ArrayList<DimDetail>();
lists.addAll(map.get("0"));
lists.addAll(map.get("1"));
for (DimDetail dim : lists){
System.out.println(dim.getDimFlag()+"==="+dim.getDimValue());
}
List<ClientFigure> figures = convert(lists);
System.out.println(figures.size());
}
private static Map<String,List<DimDetail>> getTypeMap(List<DimDetail> lists){
Map<String,List<DimDetail>> result = new HashMap<String,List<DimDetail>>();
List<DimDetail> noDim = new ArrayList<DimDetail>();
List<DimDetail> hasDim = new ArrayList<DimDetail>();
for (DimDetail dim : lists){
if (dim.getDimFlag().equals("0")){
noDim.add(dim);
}else{
hasDim.add(dim);
}
}
result.put("0", noDim);
result.put("1", hasDim);
return result;
}
private static List<ClientFigure> convert(List<DimDetail> lists){
Map<String,List<Dim>> result = new HashMap<String,List<Dim>>();
List<ClientFigure> figures = new ArrayList<ClientFigure>();
ClientFigure f = null;
String temp = "";
List<Dim> dimsList = null;
for (int i = 0;i<lists.size();i++){
temp = lists.get(i).getProfileName()+"-"+lists.get(i).getProfileId();
if (result.containsKey(temp)){
continue;
}
f = new ClientFigure();
f.setProfileId(lists.get(i).getProfileId());
f.setProfileName(lists.get(i).getProfileName());
dimsList = new ArrayList<Dim>();
for (int j = 0;j<lists.size();j++){
Dim dim = new Dim();
if (lists.get(i).getProfileId().equals(lists.get(j).getProfileId())){
dim.setPropertyId(lists.get(j).getPropertyId());
dim.setPropertyName(lists.get(j).getPropertyName());
dim.setProValue(lists.get(j).getDimValue());
dimsList.add(dim);
}
}
result.put(temp, dimsList);
f.setDims(dimsList);
figures.add(f);
}
result.clear();
return figures;
}
}