P15GEN2\59518
2024-05-29 d4210c7c4b04abde20037ea8aa0f54ef8a2649aa
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
package foundation.io.define;
 
import java.util.Iterator;
import java.util.List;
 
import foundation.right.Range;
import foundation.util.MapList;
import foundation.util.Util;
 
 
public class IOTask implements Iterable<DataIO> {
    
    private String name;
    private IOSource source;
    private Range range;
    private MapList<String, DataIO> ioList;
    private boolean existsUploadFile;
    private boolean existsDownloadFile;
    private IOSpeedMode speedMode;
 
    
    public IOTask(IOSource source) throws Exception {
        this.source = source;
        this.ioList = new MapList<String, DataIO>();
        this.speedMode = IOSpeedMode.Standard;
    }
 
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
    
    public Range getRange() {
        return range;
    }
 
    public MapList<String, DataIO> getDataIOList() {
        return ioList;
    }
    
    public void addDataIO(DataIO dataIO) {
        //1.
        String id = dataIO.getId();        
        ioList.add(id, dataIO);
        
        //2. 
        IODirection direction = dataIO.getDirection();
        
        if (IODirection.SheetToTable == direction) {
            existsUploadFile = true;
        }
        else if (IODirection.SheetToMemory == direction) {
            existsUploadFile = true;
        }
        else if (IODirection.TableToSheet == direction) {
            existsDownloadFile = true;
        }
        else if (IODirection.ErrorsToSheet == direction) {
            existsDownloadFile = true;
        }
    }
 
    public DataIO getDataIO(String id) {
        if (!ioList.contains(id)) {
            return null;
        }
 
        return ioList.get(id);
    }
    
    public DataIO getDataIO(int index) {
        return ioList.get(index);
    }
 
    public void clear() {
        ioList.clear();
    }
 
    @Override
    public Iterator<DataIO> iterator() {
        return ioList.iterator();
    }
 
    public List<DataIO> getIOList() {
        return ioList.getItemList();
    }
 
    public boolean existsUploadFile() {
        return existsUploadFile;
    }
 
    public boolean existsDownloadFile() {
        return existsDownloadFile;
    }
 
    public boolean existsFile() {
        return existsUploadFile || existsDownloadFile;
    }
 
    public IOSpeedMode getSpeedMode() {
        return speedMode;
    }
 
    public int size() {
        return ioList.size();
    }
 
    public DataIO getDownloadDataIO() {
        //1. 如果有多个 Data IO,返回那个有template的 IO
        for (DataIO dataIO: ioList) {
            if (IODirection.TableToSheet == dataIO.getDirection() || IODirection.ErrorsToSheet == dataIO.getDirection()) {
                String template = dataIO.getTemplateName();
                
                if (!Util.isEmpty(template)) {
                    return dataIO;
                }
            }
        }
        
        //2. 如果没有 template,取第一个可能的
        for (DataIO dataIO: ioList) {
            if (IODirection.TableToSheet == dataIO.getDirection() || IODirection.ErrorsToSheet == dataIO.getDirection()) {
                return dataIO;
            }
        }        
        
        return null;
    }
 
    public boolean isEmpty() {
        return ioList.isEmpty();
    }
 
    public IOSource getSource() {
        return source;
    }
 
}