Есть скрипт написанный на Groovy
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.
package com.flexsoft.fs.dataprocessing.service.loading.debtors;
import com.flexsoft.fs.dataprocessing.service.loading.debtors.DebtorsLoader;
import com.flexsoft.fs.dataprocessing.service.history.History
public class TerritoriaComforta extends DebtorsLoader{
//Номер провайдера в системе (обязательное поле)
long providerId = 500011L;
//путь до каталога с реестрами задолжников (обязательное поле)
String sourcePath = 'imp/source/territoria_comforta';
//путь до каталога с историей загрузок (обязательное поле)
String historyPath = 'imp/history/territoria_comforta';
//Разделитель полей в файле
String separator = ';';
//Первый шаг - Инициализация необходимых объектов и добавление их в карту
//Реализованный метод абстрактного класса DebtorsLoader
@Override
public Map init(History history, File file){
def args = [:] as HashMap;
def reader = file.newReader('cp1251');
args['reader'] = reader;
args['header'] = parseHeader(reader);
args['summa'] = new BigDecimal(0);
return args;
}
//Второй шаг - Чтение строк реестра.
//Возвращает карту, где ключ = 100, 101, 102, ... - номера полей в системе
//Ключ 0 зарезервирован под поле для поиска
//Реализованный метод абстрактного класса DebtorsLoader
@Override
public Iterator<Map<Integer, String>> iterator(History history, Map map) {
//анонимный класс
//методы вызываются столько же сколько записей в реестре
Iterator<Map<Integer, String>> it = new Iterator<Map<Integer, String>>() {
@Override
public boolean hasNext() {
//имеются ли ешё записи?
//если да, то вызывается метод next
return map.reader.ready();
}
@Override
public Map<Integer, String> next() {
//следующая запись
return parseLine(map);
}
@Override
public void remove() {
//просто оставляем пустым, поэтому оставляем пустым
}
};
return it;
}
//Реализованный метод абстрактного класса DebtorsLoader
@Override
public void completion(History history, Map map){
history.append('The amount in the document %s', map.header.Filesum);
history.append('Amount of records actually: %s', map.summa);
map.reader.close();
}
//Разбор заголовка файла
def parseHeader(reader){
def header = [:] as HashMap;
for(i in 1..4){
def pair = reader.readLine().tokenize(' ');
switch(pair[0].toString()){
case '#FILESUM':
header['Filesum'] = pair[1];
break;
case '#TYPE':
header['Type'] = pair[1];
break;
case '#SERVICE':
header['Service'] = pair[1];
break;
// case '#NOTE':
// header['Note'] = pair[1];
// break;
}
}
return header;
}
//Формирование карты для последующей записи в базу
def parseLine(map){
//чтение строки
def line = map.reader.readLine();
//разделение строки с помощью символа ";"
def parsedRecord = line.split(separator);
//создание карты
def record = [:] as HashMap;
record[100] = parsedRecord[0]; //ФИО
record[101] = parsedRecord[1]; //Адрес
record[102] = parsedRecord[2]; //Счёт
record[103] = parsedRecord[3]; //Сумма
record[104] = parsedRecord[4] ?: ''; //Текст
record[105] = parsedRecord[5] ?: ''; //Дата начала
record[106] = parsedRecord[6] ?: ''; //Дата конца
record[0] = parsedRecord[2]; //Поле используемое в поиске
//суммирование по всем записям
map.summa = map.summa.add(new BigDecimal(parsedRecord[3]));
return record;
}
}
есть *.cmd запускающий это скрипт
1.
2.
cd ../..
run.cmd TerritoriaComforta
Я не бумбум ни java ни тем более в groovy, но есть важная необходимость запустить этот скрипт в дебаге. Все, что я осилил это:
1.
2.
3.
4.
5.
6.
7.
class run {
@Test
void main() {
def app1 = new TerritoriaComforta();
// TODO: Что писать, хз
}
}
Как мне вызвать это скрипт из кода, так чтобы результат выполнения был бы как будто я его запустил *.cmd, но при этом мог в дебаге походить по этом скрипту???
Ребята, помогите, направте меня