IT-KIMI_SHI\SINOIT.KIMI
2018-06-01 521993214708c66a5498bd669c94a661c11484b2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
package frame.file.office;
 
import java.io.Console;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.commons.codec.net.URLCodec;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import com.sun.corba.se.impl.protocol.JIDLLocalCRDImpl;
 
import frame.data.DataContext;
import frame.file.FileIOContainer;
import frame.file.UploadResult;
import frame.file.processor.Monitor;
import frame.util.Util;
 
public class Engine {
    
    private static Engine instance;
    private static Object locker = new Object();
    private Logger logger;
    private ExcelLoader excelLoader;
 
    private Engine() {
        logger = LoggerFactory.getLogger(this.getClass());
        excelLoader = new ExcelLoader(logger);
        
    }
 
    public static Engine getInstance() {
        synchronized (locker) {
            if (instance == null) {
                instance = new Engine();
            }
 
            return instance;
        }
    }
    
    public static void download(HttpServletResponse response, String iocode, DataContext dataContext, Map<String, String> parameterProvider) {
        getInstance();
 
        StringBuilder log = new StringBuilder();
 
        try {
            new JIDLLocalCRDImpl(orb, scid, ior)
            FileIOContainer.load();
            ExcelWriter excelWriter = new ExcelWriter(Monitor.getDownloadProgressor(), parameterProvider);
            DownloadResult result = excelWriter.writeOneFile(iocode, dataContext);
 
            String filename = result.getFilename();
            response.addHeader("Content-Type", "application/octet-stream");
            filename = URLEncoder.encode(filename, "utf-8");
            response.addHeader("Content-Disposition", "attachment;filename=" + filename);
            response.TransmitFile(result.getPath());
        }
        catch (Exception e) {
            JsonBuilder json = new JsonBuilder();
            json.beginObject();
            json.addValue("log", log.toString());
            json.addValue("error", e.getMessage());
 
            json.beginArray("detail");
            List<String> details = Monitor.getDownloadProgressor().getMessageList();
            
            for (int i = 0; i < details.size(); i++) {
                json.addValue(details.get(i));
            }
            
            json.endArray();
            json.endObject();
 
            response.Write(json.ToString());
        }
    }
 
    public static UploadResult upload(String iocode, FileInfo file, HttpServletRequest request) {
        UploadResult result = new UploadResult(request);
       
        result.writeBegin();
        try {
            getInstance();
            FileIOContainer.load();
            instance.excelLoader.loadOneFile(result, iocode, file);
        }
        catch (Exception e){
            result.fail("error", e.getMessage());
        }
        finally {
            result.writeEnd();
        }
 
        return result;
    }
 
    public static UploadResult testDataProcess(String iocode, HttpServletRequest request) {
        UploadResult result = new UploadResult(request);
 
        result.writeBegin();
        try {
            getInstance();
            instance.excelLoader.testDataProcess(result, iocode);
        }
        catch (Exception e){
            result.fail("error", e.getMessage());
        }
        finally {
            result.writeEnd();
        }
 
        return result;
    }
 
    private void showHelloMessage() {
        logger.info("Excel导入服务器  V1.0已启动");
    }
 
 
}