Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / groovy помоги запуститься / 2 сообщений из 2, страница 1 из 1
23.02.2014, 19:59
    #38569917
2king2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
groovy помоги запуститься
Есть скрипт написанный на 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
24.02.2014, 17:34
    #38570744
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
groovy помоги запуститься
Я сделал примерно так (myrun.cmd):
Код: sql
1.
2.
3.
4.
5.
@echo off
setlocal
java -server -showversion^
 -agentlib:jdwp=help
endlocal

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


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