powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / groovy помоги запуститься
2 сообщений из 2, страница 1 из 1
groovy помоги запуститься
    #38569917
2king2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть скрипт написанный на Groovy
Код: java
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 запускающий это скрипт
Код: java
1.
2.
cd ../..
run.cmd TerritoriaComforta


Я не бумбум ни java ни тем более в groovy, но есть важная необходимость запустить этот скрипт в дебаге. Все, что я осилил это:

Код: java
1.
2.
3.
4.
5.
6.
7.
class run {
    @Test
    void main() {
        def app1 = new TerritoriaComforta();
        //  TODO: Что писать, хз
    }
}


Как мне вызвать это скрипт из кода, так чтобы результат выполнения был бы как будто я его запустил *.cmd, но при этом мог в дебаге походить по этом скрипту???
Ребята, помогите, направте меня
...
Рейтинг: 0 / 0
groovy помоги запуститься
    #38570744
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сделал примерно так (myrun.cmd):
Код: sql
1.
2.
3.
4.
5.
@echo off
setlocal
java -server -showversion^
 -agentlib:jdwp=help
endlocal

Про экранирование конца строки и прочие хитрости можно почитать на RSDN
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / groovy помоги запуститься
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]