Commit 23dddcacb96326a92a256dd0181bbd08d3040941

Authored by Wesnydy Ribeiro
1 parent b5cf8f1c
Exists in master and in 1 other branch devel

Atualização (VLibras-Box)

Makefile
... ... @@ -24,7 +24,8 @@ INCLUDES= \
24 24 #-I libs/jthread/include -I libs/jcommon/include -I libs/jsocket/include -Wall
25 25  
26 26 utilObjs= \
27   - logger.o
  27 + logger.o \
  28 + property.o
28 29  
29 30 tradutorObjs = \
30 31 pyTradutor.o \
... ...
main.cpp
... ... @@ -16,22 +16,27 @@
16 16 #include "serviceWindowGenerationFromREC.h"
17 17 #include "serviceWindowGenerationFromText.h"
18 18 #include "serviceException.h"
  19 +#include "property.h"
19 20  
20 21 #include <sys/time.h>
21 22 #include <stdlib.h>
22 23  
  24 +#define BLOQUEANTE 1
  25 +#define NAO_BLOQUEANTE 2
  26 +#define BOTH 3
  27 +
23 28 using namespace std;
24 29  
25   -void serviceCC();
26   -void serviceSRT(char* path_in, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* username);
27   -void serviceOnlySRT(char* path_file, char* transparency, char* username);
28   -void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username, char* rate);
29   -void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username);
30   -void serviceOnlyAudio(char* path_audio, char* transparency, char* username, char* rate);
31   -void serviceOnlyAudio(char* path_audio, char* transparency, char* username);
32   -void serviceText(char* path_text, char* transparency, char* username, char* client_type);
  30 +void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type);
  31 +void serviceOnlySRT(char* service, char* path_file, char* transparency, char* username, char* client_type);
  32 +//void serviceREC(char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* username, char* rate);
  33 +void serviceREC(char* service, char* path_video, char* sublanguage, char* position, char* size, char* transparency, char* id, char* client_type);
  34 +//void serviceOnlyAudio(char* path_audio, char* transparency, char* username, char* rate);
  35 +void serviceOnlyAudio(char* service, char* path_audio, char* transparency, char* id, char* client_type);
  36 +void serviceText(char* service, char* path_text, char* transparency, char* id, char* client_type);
33 37  
34 38 void help();
  39 +void serviceHelp(int service);
35 40 void fail(string msg);
36 41 void hasFailed();
37 42 void hasInvalid();
... ... @@ -47,74 +52,98 @@ int main(int argc, char* argv[]) {
47 52 gettimeofday(&tv1, NULL);
48 53 t1 = (double)(tv1.tv_sec) + (double)(tv1.tv_usec)/ 1000000.00;
49 54  
  55 + /*try{
  56 + PropertyHandler* reader = new PropertyHandler();
  57 + service-type = reader->getAttributeValue("SERVICE-TYPE");
  58 + }catch(RuntimeException &ex){
  59 + return; // escrever log aki
  60 + }*/
50 61  
51   - printf("\n################## VLIBRAS : LAVID ##################\n\n");
52   - DDPRINTF("Service Type: %s\n", argv[1]);
  62 + //Util::Logger::Instance()->writeInfoLog("/home/wesnydy/.vlibras-conf/service/log-vbox", "VBox OK!");
53 63  
54   - switch((int) atoi(argv[1])){
55   - case 1:
56   - serviceCC();
57   - hasInvalid();
58   - break;
59   - case 2:
60   - if(argc <= 8){
61   - cout << "\nParametros inválidos. Tente novamente.\nService Type SRT: ./vlibras 2 INPUT_VIDEO INPUT_SRT LANGUAGE{1=Portuguese, 2=Glosa} POSITION{1=Top Left, 2=Top Right, 3=Bottom Right, 4=Bottom Left} SIZE{1=Small, 2=Medium, 3=Large} TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl;
62   - help();
63   - hasInvalid();
  64 + printf("\n################## VLIBRAS : LAVID ##################\n\n");
  65 +
  66 + if(argc >= 2) {
  67 +
  68 + DDPRINTF("Service Type: %s\n", argv[1]);
  69 +
  70 + switch((int) atoi(argv[1])){
  71 +
  72 + case 1:
  73 + //printf("[INFO] Serviço em manutenção!!!\n");
  74 + //exit(0);
  75 + if(argc < 9){
  76 + serviceHelp(1);
  77 + hasInvalid();
  78 + break;
  79 + }
  80 + if(argc == 9)
  81 + serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], "user");
  82 + else
  83 + serviceSRT(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
  84 +
64 85 break;
65   - }
66   - serviceSRT(argv[2], argv[3], argv[4], argv[5],
67   - argv[6], argv[7], argv[8]);
68   - break;
69   - case 3:
70   - if(argc <= 7){
71   - cout << "\nParametros inválidos. Tente novamente.\nService Type REC: ./vlibras 3 INPUT_VIDEO LANGUAGE{1=Portuguese, 2=Glosa} POSITION{1=Top Left, 2=Top Right, 3=Bottom Right, 4=Bottom Left} SIZE{1=Small, 2=Medium, 3=Large} TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl;
72   - help();
73   - hasInvalid();
  86 + case 2:
  87 + printf("[INFO] Serviço em manutenção!!!\n");
  88 + exit(0);
  89 + if(argc < 7){
  90 + serviceHelp(2);
  91 + hasInvalid();
  92 + break;
  93 + }
  94 + if(argc == 7)
  95 + serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], "user");
  96 + else
  97 + serviceREC(argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
74 98 break;
75   - }
76   - if (argc == 8)
77   - serviceREC(argv[2], argv[3], argv[4], argv[5],
78   - argv[6], argv[7]);
79   - else
80   - serviceREC(argv[2], argv[3], argv[4], argv[5],
81   - argv[6], argv[7], argv[8]);
82   - break;
83   - case 4:
84   - if(argc <= 5){
85   - cout << "\nParametros inválidos. Tente novamente.\nService Type Text: ./vlibras 4 INPUT_TEXT_FILE TRANSPARENCY{0=Opaque, 1=Transparent} ID CLIENT_TYPE{Desktop, Web}" << endl;
86   - help();
87   - hasInvalid();
88   - break;
89   - }
90   - serviceText(argv[2], argv[3], argv[4], argv[5]);
91   - break;
92   - case 5:
93   - if(argc <= 4){
94   - cout << "\nParametros inválidos. Tente novamente.\nService Type SRT Only: ./vlibras 5 INPUT_SRT TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl;
95   - help();
96   - hasInvalid();
  99 + case 3:
  100 + //printf("[INFO] Serviço em manutenção!!!\n");
  101 + //exit(0);
  102 + if(argc < 5){
  103 + serviceHelp(3);
  104 + hasInvalid();
  105 + break;
  106 + }
  107 + if(argc == 5){
  108 + serviceText(argv[1], argv[2], argv[3], argv[4], "user");
  109 + }
  110 + serviceText(argv[1], argv[2], argv[3], argv[4], argv[5]);
  111 + break;
  112 + case 4:
  113 + printf("[INFO] Serviço em manutenção!!!\n");
  114 + exit(0);
  115 + if(argc < 5){
  116 + serviceHelp(4);
  117 + hasInvalid();
  118 + break;
  119 + }
  120 + if(argc == 5 )
  121 + serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], "user");
  122 + else
  123 + serviceOnlySRT(argv[1], argv[2], argv[3], argv[4], argv[5]);
  124 + break;
  125 + case 5:
  126 + printf("[INFO] Serviço em manutenção!!!\n");
  127 + exit(0);
  128 + if(argc < 5){
  129 + serviceHelp(5);
  130 + hasInvalid();
  131 + break;
  132 + }
  133 + if (argc == 5)
  134 + serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], "user");
  135 + else
  136 + serviceOnlyAudio(argv[1], argv[2], argv[3], argv[4], argv[5]);
97 137 break;
98   - }
99   - serviceOnlySRT(argv[2], argv[3], argv[4]);
100   - break;
101   - case 6:
102   - if(argc <= 4){
103   - cout << "\nParametros inválidos. Tente novamente.\nService Type REC: ./vlibras 6 INPUT_AUDIO TRANSPARENCY{0=Opaque, 1=Transparent} ID" << endl;
104   - help();
105   - hasInvalid();
  138 + default:
  139 + cout << "\nServiço inválido. Tente novamente." << endl;
  140 + help();
  141 + hasInvalid();
106 142 break;
107   - }
108   - if (argc == 6)
109   - serviceOnlyAudio(argv[2], argv[3], argv[4], argv[5]);
110   - else
111   - serviceOnlyAudio(argv[2], argv[3], argv[4]);
112   - break;
113   - default:
114   - cout << "\nServiço inválido. Tente novamente." << endl;
115   - help();
116   - hasInvalid();
117   - break;
  143 + }
  144 + }else{
  145 + help();
  146 + hasInvalid();
118 147 }
119 148  
120 149 if(isFailed)
... ... @@ -131,69 +160,33 @@ int main(int argc, char* argv[]) {
131 160  
132 161 }
133 162  
134   -void serviceCC(){
135   -
136   - cout << "\n--> Serviço não disponível.\n" << endl;
137   - /**
138   - cout << "\nSERVICE CLOSED CAPTION\n" << endl;
139   - filename = createFileToResponse((char*)argv[6]); // FIXME: [6] é transparency
140   -
141   - char* input_file = argv[2];
142   - int position = (int) atoi(argv[4]);
143   - int size = (int) atoi(argv[5]);
144   - int transparency = (int) atoi(argv[6]);
  163 +void serviceSRT(char* service, char* path_video, char* path_srt, char* sublanguage, char* position,
  164 + char* size, char* transparency, char* id, char* client_type){
145 165  
146   - ServiceWindowGenerationFromCC *service;
147   - service = new ServiceWindowGenerationFromCC(
148   - input_file,position,size, transparency, 1);
149   -
150   - service->initialize();
151   -
152   - while(service->isRunning()){
153   - sleep(5);
154   - }
155   -
156   - char* id = (char*) argv[7];
157   - updateRequestStatus(filename.c_str(), id, "true");
158   - **/
159   -}
160   -
161   -void serviceREC(char* path_video, char* sublanguage,
162   - char* position, char* size, char* transparency, char* id, char* rate){
163   -
164   - ServiceWindowGenerationFromREC * service_rec;
165   - service_rec = new ServiceWindowGenerationFromREC(
166   - path_video,
167   - (int) atoi(sublanguage),
168   - (int) atoi(position),
169   - (int) atoi(size),
170   - (int) atoi(transparency),
171   - id, 3, rate);
  166 + ServiceWindowGenerationFromSRT * service_srt;
  167 + service_srt = new ServiceWindowGenerationFromSRT(path_video, path_srt, (int) atoi(sublanguage),
  168 + (int) atoi(position), (int) atoi(size), (int) atoi(transparency), id, client_type, (int) atoi(service));
172 169  
173 170 try{
174   - service_rec->initialize();
  171 + service_srt->initialize();
175 172 }catch(ServiceException ex){
176 173 fail(ex.getMessage());
177 174 hasFailed();
178 175 return;
179   - }
180   - while(!service_rec->isFinished()){
181   - sleep(2);
  176 + }
  177 + while(!service_srt->isFinished()){
  178 + sleep(5);
182 179 }
183   - delete service_rec;
  180 +
  181 + delete service_srt;
184 182 }
185 183  
186   -void serviceREC(char* path_video, char* sublanguage,
187   - char* position, char* size, char* transparency, char* id){
  184 +void serviceREC(char* service, char* path_video, char* sublanguage, char* position, char* size,
  185 + char* transparency, char* id, char* client_type){
188 186  
189 187 ServiceWindowGenerationFromREC * service_rec;
190   - service_rec = new ServiceWindowGenerationFromREC(
191   - path_video,
192   - (int) atoi(sublanguage),
193   - (int) atoi(position),
194   - (int) atoi(size),
195   - (int) atoi(transparency),
196   - id, 3);
  188 + service_rec = new ServiceWindowGenerationFromREC(path_video, (int) atoi(sublanguage),
  189 + (int) atoi(position), (int) atoi(size), (int) atoi(transparency), id, client_type, (int) atoi(service));
197 190  
198 191 try{
199 192 service_rec->initialize();
... ... @@ -208,73 +201,29 @@ void serviceREC(char* path_video, char* sublanguage,
208 201 delete service_rec;
209 202 }
210 203  
211   -void serviceSRT(char* path_in, char* path_srt, char* sublanguage,
212   - char* position, char* size, char* transparency, char* id){
  204 +void serviceText(char* service, char* path_text, char* transparency, char* id, char* client_type){
213 205  
214   -
215   - ServiceWindowGenerationFromSRT * service_srt;
216   - service_srt = new ServiceWindowGenerationFromSRT(
217   - path_in, path_srt, (int) atoi(sublanguage),
218   - (int) atoi(position), (int) atoi(size),
219   - (int) atoi(transparency), id, 2);
220   -
221   - try{
222   - service_srt->initialize();
223   - }catch(ServiceException ex){
224   - fail(ex.getMessage());
225   - hasFailed();
226   - return;
227   - }
228   - while(!service_srt->isFinished()){
229   - sleep(5);
230   - }
231   -
232   - delete service_srt;
233   -
234   -}
  206 + ServiceWindowGenerationFromText *service_text;
  207 + service_text = new ServiceWindowGenerationFromText(path_text, id, (int) atoi(transparency), (int) atoi(service), client_type);
235 208  
236   -void serviceText(char* path_text, char* transparency, char* id, char* client_type){
237   -
238   - if (strcmp(client_type, (char*)"WEB") == 0) {
239   - ServiceWindowGenerationFromText *service_text;
240   - service_text = new ServiceWindowGenerationFromText(path_text, id, (int) atoi(transparency), 4, client_type);
241   - try{
242   - service_text->initialize();
243   - }catch(ServiceException ex){
244   - fail(ex.getMessage());
245   - hasFailed();
246   - return;
247   - }
248   -
249   - while (!service_text->isFinished()) {
250   - usleep(100000); //100ms
251   - }
252   - delete service_text;
253   -
254   - } else {
255   -
256   - ServiceWindowGenerationFromText *service_text;
257   - service_text = new ServiceWindowGenerationFromText(path_text, id, (int) atoi(transparency), 4, (char*)"IOS");
258   - try{
259   - service_text->initialize();
260   - }catch(ServiceException ex){
261   - fail(ex.getMessage());
262   - hasFailed();
263   - return;
264   - }
  209 + try{
  210 + service_text->initialize();
  211 + }catch(ServiceException ex){
  212 + fail(ex.getMessage());
  213 + hasFailed();
  214 + return;
  215 + }
265 216  
266   - while (!service_text->isFinished()) {
267   - usleep(100000); //100ms
268   - }
269   - delete service_text;
270   - }
271   -
  217 + while (!service_text->isFinished()) {
  218 + usleep(100000); //100ms
  219 + }
  220 + delete service_text;
272 221 }
273 222  
274   -void serviceOnlySRT(char* path_file, char* transparency, char* id){
  223 +void serviceOnlySRT(char* service, char* path_file, char* transparency, char* id, char* client_type){
275 224  
276 225 ServiceWindowGenerationFromSRT * service_srt;
277   - service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, 5);
  226 + service_srt = new ServiceWindowGenerationFromSRT(path_file, (int) atoi(transparency), id, client_type, (int) atoi(service));
278 227 try{
279 228 service_srt->initialize();
280 229 }catch(ServiceException ex){
... ... @@ -290,16 +239,35 @@ void serviceOnlySRT(char* path_file, char* transparency, char* id){
290 239  
291 240 }
292 241  
293   -void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate){
  242 +void serviceOnlyAudio(char* service, char* path_audio, char* transparency, char* id, char* client_type){
  243 +
  244 + ServiceWindowGenerationFromREC * service_rec;
  245 + service_rec = new ServiceWindowGenerationFromREC(path_audio, 0, 0, 0, (int) atoi(transparency), id, client_type, (int) atoi(service));
  246 +
  247 + try{
  248 + service_rec->initialize();
  249 + }catch(ServiceException ex){
  250 + fail(ex.getMessage());
  251 + hasFailed();
  252 + return;
  253 + }
  254 + while(!service_rec->isFinished()){
  255 + sleep(2);
  256 + }
  257 + delete service_rec;
  258 +}
  259 +
  260 +/*void serviceREC(char* path_video, char* sublanguage,
  261 + char* position, char* size, char* transparency, char* id, char* rate){
294 262  
295 263 ServiceWindowGenerationFromREC * service_rec;
296 264 service_rec = new ServiceWindowGenerationFromREC(
297   - path_audio,
298   - 0,
299   - 0,
300   - 0,
  265 + path_video,
  266 + (int) atoi(sublanguage),
  267 + (int) atoi(position),
  268 + (int) atoi(size),
301 269 (int) atoi(transparency),
302   - id, 6, rate);
  270 + id, 2, rate);
303 271  
304 272 try{
305 273 service_rec->initialize();
... ... @@ -312,9 +280,9 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate
312 280 sleep(2);
313 281 }
314 282 delete service_rec;
315   -}
  283 +}*/
316 284  
317   -void serviceOnlyAudio(char* path_audio, char* transparency, char* id){
  285 +/*void serviceOnlyAudio(char* path_audio, char* transparency, char* id, char* rate){
318 286  
319 287 ServiceWindowGenerationFromREC * service_rec;
320 288 service_rec = new ServiceWindowGenerationFromREC(
... ... @@ -323,7 +291,7 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id){
323 291 0,
324 292 0,
325 293 (int) atoi(transparency),
326   - id, 6);
  294 + id, 5, rate);
327 295  
328 296 try{
329 297 service_rec->initialize();
... ... @@ -336,7 +304,7 @@ void serviceOnlyAudio(char* path_audio, char* transparency, char* id){
336 304 sleep(2);
337 305 }
338 306 delete service_rec;
339   -}
  307 +}*/
340 308  
341 309 void fail(string msg){
342 310 printf("\n");
... ... @@ -352,45 +320,65 @@ void hasInvalid(){
352 320 isInvalid = true;
353 321 }
354 322  
  323 +void serviceHelp(int service){
  324 + cout << "\nParâmetros inválidos! Tente novamente.\n";
  325 + switch(service){
  326 + case 1:
  327 + cout << "\nService Type: Video with Subtitles\n"
  328 + << "./vlibras INPUT_VIDEO INPUT_SRT LANGUAGE(1: Portuguese, 2:Glosa) POSITION(1: Top_Left, 2: Top_Right, 3: Bottom_Right, 4: Bottom_Left) "
  329 + << "SIZE(1: Small, 2: Medium, 3: Large) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n";
  330 + break;
  331 + case 2:
  332 + cout << "\nService Type: Video Recognize\n"
  333 + << "./vlibras INPUT_VIDEO LANGUAGE(1: Portuguese, 2:Glosa) POSITION(1: Top_Left, 2: Top_Right, 3: Bottom_Right, 4: Bottom_Left) "
  334 + << "SIZE(1: Small, 2: Medium, 3: Large) TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n";
  335 + break;
  336 + case 3:
  337 + cout << "\nService Type: Text\n"
  338 + << "./vlibras INPUT_TEXT_FILE TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n";
  339 + break;
  340 + case 4:
  341 + cout << "\nService Type: Subtitles only\n"
  342 + << "./vlibras INPUT_SRT TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n";
  343 + break;
  344 + case 5:
  345 + cout << "\nService Type: Audio Recognize\n"
  346 + << "./vlibras INPUT_AUDIO TRANSPARENCY(0: Opaque, 1: Transparent) ID CLIENT_TYPE\n";
  347 + break;
  348 + }
  349 +}
355 350  
356 351 //Help do programa, explicando todos os parâmetros existentes...
357 352 void help() {
358   - cout <<"\n##################################################################################\n"
359   - <<"# SERVICE_TYPE: 1 - means Closed Caption - doesn't use INPUT_SRT #\n"
360   - <<"# 2 - means With Subtitles (SRT) - requires INPUT_SRT #\n"
361   - <<"# 3 - means Recognize - requires INPUT_VIDEO #\n"
362   - <<"# 4 - means Text - requires INPUT_FILE_TEXT #\n"
363   - <<"# 5 - means Subtitles ONLY (SRT) - requires INPUT_SRT #\n"
364   - <<"# 6 - means Audio - requires INPUT_AUDIO #\n"
365   - <<"####################################################################################\n\n"
366   - /*<<"# INPUT_VIDEO: Path of the video file #\n"
367   - <<"#----------------------------------------------------------------------------------#\n"
368   - <<"# INPUT_SRT: Path of the SRT file (only for SERVICE_TYPE = 2) #\n"
369   - <<"#----------------------------------------------------------------------------------#\n"
370   - <<"# INPUT_FILE_TEXT: Path of the text file (doesn't use INPUT_VIDEO and INPUT_SRT) #\n"
371   - <<"#----------------------------------------------------------------------------------#\n"
372   - <<"# INPUT_AUDIO: Path of the audio file" #\n
373   - <<"#----------------------------------------------------------------------------------#\n"
374   - <<"# LANGUAGE: 1 - means Portuguese #\n"
375   - <<"# 2 - means Glosa #\n"
376   - <<"#----------------------------------------------------------------------------------#\n"
377   - <<"# POSITION: 1 - means TOP_LEFT #\n"
378   - <<"# 2 - means TOP_RIGHT #\n"
379   - <<"# 3 - means BOTTOM_RIGHT #\n"
380   - <<"# 4 - means BOTTOM_LEFT #\n"
381   - <<"#----------------------------------------------------------------------------------#\n"
382   - <<"# SIZE: 1 - means SMALL #\n"
383   - <<"# 2 - means MEDIUM #\n"
384   - <<"# 3 - means LARGE #\n"
385   - <<"#----------------------------------------------------------------------------------#\n"
386   - <<"# TRANSPARENCY: 0 - means that the Background is Opaque #\n"
387   - <<"# 1 - means that the Background is Transparent #\n"
388   - <<"#----------------------------------------------------------------------------------#\n"
389   - <<"# CLIENT TYPE: DESKTOP #\n"
390   - <<"# WEB #\n"
391   - <<"#----------------------------------------------------------------------------------#\n"
392   - <<"# ID: relative to the unique ID on the Database #\n"
393   - <<"####################################################################################\n"*/;
394   -
395   -}
396 353  
  354 + cout << endl
  355 + << "Usage Summary: vlibras [SERVICE] [INPUT] ... [TRANSPARENCY] [ID] [CLIENT_TYPE]\n"
  356 + << "\nSERVICE:\n"
  357 + << "1 Video with Subtitles (SRT) - requires INPUT_VIDEO and INPUT_SRT\n"
  358 + << "2 Video Recognize - requires INPUT_VIDEO\n"
  359 + << "3 Text - requires INPUT_TEXT_FILE\n"
  360 + << "4 Subtitles only (SRT) - requires INPUT_SRT\n"
  361 + << "5 Audio Recognize - requires INPUT_AUDIO\n"
  362 + << "\nSERVICES PARAMETERS:\n"
  363 + << "Video with subtitles:\n"
  364 + << " [INPUT_VIDEO] [INPUT_SRT] [LANGUAGE] [POSITION] [SIZE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n"
  365 + << "Video Recognize:\n"
  366 + << " [INPUT_VIDEO] [LANGUAGE] [POSITION] [SIZE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n"
  367 + << "Text:\n"
  368 + << " [INPUT_TEXT_FILE] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n"
  369 + << "Subtitles only:\n"
  370 + << " [INPUT_SRT] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n"
  371 + << "Audio Recognize\n"
  372 + << " [INPUT_AUDIO] [TRANSPARENCY] [ID] [CLIENT_TYPE]\n"
  373 + << "\nPARAMETERS:\n"
  374 + << "INPUT_VIDEO Path of the video file\n"
  375 + << "INPUT_SRT Path of the subtitle file\n"
  376 + << "INPUT_TEXT_FILE Path of the text file\n"
  377 + << "INPUT_AUDIO Path of the audio file\n"
  378 + << "LANGUAGE 1 - means Portuguese, 2 - means Glosa\n"
  379 + << "POSITION 1 - means Top_Left, 2 - means Top_Right, 3 - means Bottom_Right, 4 - means Bottom_Left\n"
  380 + << "SIZE 1 - means Small, 2 - means Medium, 3 - means Large\n"
  381 + << "TRANSPARENCY 0 - means that the background is opaque , 1 - means that the background is transparent\n"
  382 + << "ID Relative to the unique ID on the Database\n"
  383 + << "CLIENT_TYPE web - necessary only for web clients, others clients can ignore this parameter\n";
  384 +}
397 385 \ No newline at end of file
... ...
mixer/src/Mixer.cpp
... ... @@ -24,10 +24,11 @@ Mixer::~Mixer() {
24 24  
25 25 /*Faz a chamada ffmpeg no terminal.*/
26 26  
27   -void Mixer::initialize(string mainVideo, string slVideo, int positionSecondaryVideo, int sizeSecondaryVideo, int transparency, char* _id){
  27 +void Mixer::initialize(string mainVideo, string slVideo, int positionSecondaryVideo, int sizeSecondaryVideo, int transparency, char* _id, char* client_type){
28 28  
29 29 DDPRINTF("[AGUARDE] Mixando...\n")
30 30  
  31 + client = client_type;
31 32 stringstream ss;
32 33 ss << _id;
33 34 ss >> user_id;
... ... @@ -42,7 +43,6 @@ void Mixer::initialize(string mainVideo, string slVideo, int positionSecondaryVi
42 43 this->setTransparency(transparency);
43 44 this->setPathFinal();
44 45 this->mixVideos();
45   -
46 46 }
47 47  
48 48 void Mixer::mixVideos () {
... ... @@ -146,8 +146,24 @@ void Mixer::mixVideos () {
146 146 }
147 147  
148 148 void Mixer::setPathFinal(){
149   - pathFinal = PATH_API;
150   - pathFinal.append(user_id).append(".mp4");
  149 +
  150 + char* final_path = new char[256];
  151 +
  152 + if(strcmp(client, (char*)WEB_USER) == 0){
  153 + pathFinal = PATH_API;
  154 + pathFinal.append(user_id).append(".mp4");
  155 + }else{
  156 + try{
  157 + PropertyHandler* reader = new PropertyHandler("vlibras_user/.vlibras-conf/configuration/params-vbox.conf");
  158 + strcpy(final_path, reader->getAttributeValue("STORAGE"));
  159 + stringstream ss;
  160 + ss << final_path;
  161 + ss >> pathFinal;
  162 + pathFinal.append("/").append(user_id).append(".mp4");
  163 + }catch(RuntimeException &ex){
  164 + printf("%s\n", ex.getMessage().c_str());
  165 + }
  166 + }
151 167 }
152 168  
153 169 /*Ajusta o FPS do vídeo principal para 45 se preciso...*/
... ... @@ -314,11 +330,16 @@ void Mixer::setMainVideo(string mainVideo){
314 330 }
315 331 //ajeitar isso depois
316 332 string nameOfMainVideo = mainVideo.substr(0, dotPosition);
317   - this->temporaryTextFile = "vlibras_user/vlibras-api/uploads/";
318   - temporaryTextFile.append(this->user_id).append("/tamanho.txt");
319   -
  333 + char* final_path = new char[256];
  334 +
  335 + if(strcmp(client, (char*)WEB_USER) == 0){
  336 + this->temporaryTextFile = "vlibras_user/vlibras-api/uploads/";
  337 + temporaryTextFile.append(this->user_id).append("/tamanho.txt");
  338 + }else{
  339 + this->temporaryTextFile = "vlibras_user/.vlibras-conf/contents/";
  340 + temporaryTextFile.append("tamanho.txt");
  341 + }
320 342 //printf("##########temporaryTextFile: %s\n", temporaryTextFile.c_str());
321   -
322 343 }
323 344 string Mixer::getMainVideo(){
324 345 return this->mainVideo;
... ...
mixer/src/include/Mixer.h
... ... @@ -17,9 +17,10 @@
17 17 #include <string>
18 18 #include <fstream>
19 19 #include "dprintf.h"
  20 +#include "property.h"
20 21  
21 22 using namespace std;
22   -
  23 +using namespace sndesc;
23 24  
24 25 //SL Video Position
25 26 #define TOP_LEFT 1
... ... @@ -35,9 +36,12 @@ using namespace std;
35 36 #define MEDIUM_HEIGHT 432 //0,4*1080
36 37 #define LARGE_HEIGHT 540 //0.5*1080
37 38  
  39 +#define MAX_SIZE_PATH 256
  40 +#define WEB_USER "web"
38 41 #define PATH_API "vlibras_user/vlibras-api/videos/"
39 42  
40 43 using namespace std;
  44 +using namespace sndesc;
41 45  
42 46 class Mixer {
43 47 public:
... ... @@ -62,7 +66,7 @@ public:
62 66 int getTransparency();
63 67 void setNumThreads(string);
64 68 string getNumThreads();
65   - void initialize(string mainVideo, string slVideo, int, int, int, char*);
  69 + void initialize(string mainVideo, string slVideo, int, int, int, char*, char*);
66 70 void setPathFinal();
67 71  
68 72 private:
... ... @@ -78,11 +82,12 @@ private:
78 82 void convertSecondaryVideoFPS(double);
79 83  
80 84 string mainVideo, secondaryVideo, temporaryTextFile, numThreads, pathFinal, user_id;
  85 + char* client;
81 86 int positionSecondaryVideo;
82 87 double widthSecondaryVideo, heightSecondaryVideo;
83 88 int transparency;
84 89  
85   -
  90 + PropertyHandler* reader;
86 91  
87 92 };
88 93  
... ...
servico/src/include/serviceWindowGeneration.h
... ... @@ -11,7 +11,8 @@
11 11 #include <limits.h>
12 12 #include "dprintf.h"
13 13 #include "Mixer.h"
14   -#include "inputFile.h"
  14 +//#include "inputFile.h"
  15 +#include "property.h"
15 16 #include "listenerTradutor.h"
16 17 #include "tradutorPortGlosa.h"
17 18 //#include "httpstreamer.h"
... ... @@ -20,23 +21,25 @@
20 21 #include "serviceException.h"
21 22 #include <lavidlib/base/RuntimeException.h>
22 23  
  24 +#define WEB_USER "web"
23 25 #define VIDEO_POSE_NEUTRA "poseneutra"
24 26 #define BASEDIR "vlibras_user/dicionario_libras/"
25 27 #define BASEDIRTRANSP "vlibras_user/dicionarioTransp_libras/"
26 28 #define EXTENSAO_DICIONARIO ".ts"
  29 +#define PATH_CONTENTS "vlibras_user/.vlibras-conf/contents/"
27 30 #define PATH_API "vlibras_user/vlibras-api/videos/"
28 31 #define MAX_SIZE_PATH 256
29 32  
30   -/*#define SERVICE_TYPE_CC 1 /* Closed Caption */
31   -#define SERVICE_TYPE_SRT 2 /* Subtitle SRT */
32   -#define SERVICE_TYPE_REC 3 /* Reconhecimento de Voz */
33   -#define SERVICE_TYPE_TEXT 4 /* Texto */
34   -#define SERVICE_TYPE_SRT_ONLY 5 /* Subtitle SRT ONLY */
35   -#define SERVICE_TYPE_REC_ONLY_AUDIO 6 /* Subtitle AUDIO ONLY */
  33 +#define SERVICE_TYPE_SRT 1 /* Subtitle SRT */
  34 +#define SERVICE_TYPE_REC 2 /* Reconhecimento de Voz */
  35 +#define SERVICE_TYPE_TEXT 3 /* Texto */
  36 +#define SERVICE_TYPE_SRT_ONLY 4 /* Subtitle SRT ONLY */
  37 +#define SERVICE_TYPE_REC_ONLY_AUDIO 5 /* Subtitle AUDIO ONLY */
36 38  
37 39 using namespace Tradutor;
38   -using namespace Util;
  40 +//using namespace Util;
39 41 using namespace std;
  42 +using namespace sndesc;
40 43  
41 44 class ServiceWindowGeneration : public ListenerTradutor, public ListenerSynchronizer{
42 45  
... ... @@ -45,8 +48,9 @@ protected:
45 48 TradutorPortGlosa * tradutor;
46 49 //HttpStreamer *sincronizador;
47 50 Synchronizer * sincronizador;
48   - InputFile * inputfile;
  51 + //InputFile * inputfile;
49 52 Mixer * mixer;
  53 + PropertyHandler* reader;
50 54  
51 55 vector<int64_t> * vetor_pts;
52 56  
... ...
servico/src/include/serviceWindowGenerationFromREC.h
... ... @@ -20,7 +20,7 @@ private:
20 20 public:
21 21  
22 22 ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType, char* rate);
23   - ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, int _serviceType);
  23 + ServiceWindowGenerationFromREC(char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int _serviceType);
24 24 ~ServiceWindowGenerationFromREC();
25 25  
26 26 virtual void notifyTextRecognized(unsigned char* text, int64_t pts);
... ...
servico/src/include/serviceWindowGenerationFromSRT.h
... ... @@ -29,9 +29,9 @@ public:
29 29  
30 30 /* Construtor 1 - legenda e vídeo */
31 31 ServiceWindowGenerationFromSRT(char* path_video, char* path_srt, int sublanguage,
32   - int position, int size, int transparency, char* id, int _serviceType);
  32 + int position, int size, int transparency, char* id, char* client_type, int _serviceType);
33 33 /* Construtor 2 - só legenda */
34   - ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, int _serviceType);
  34 + ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, char* client_type, int _serviceType);
35 35 ~ServiceWindowGenerationFromSRT();
36 36  
37 37 virtual void notifySubtitle(unsigned char* subtitle, int64_t pts);
... ...
servico/src/include/serviceWindowGenerationFromText.h
... ... @@ -17,8 +17,7 @@ private:
17 17 bool finish;
18 18  
19 19 public:
20   - ServiceWindowGenerationFromText (char* _path_file, char* _video_path_file,
21   - int _transp, int _serviceType, char* _client_type);
  20 + ServiceWindowGenerationFromText (char* _path_file, char* user_id, int _transp, int _serviceType, char* _client_type);
22 21 ~ServiceWindowGenerationFromText ();
23 22  
24 23 void notifyLine(unsigned char* line);
... ...
servico/src/serviceWindowGeneration.cpp
... ... @@ -4,6 +4,9 @@
4 4 ServiceWindowGeneration::ServiceWindowGeneration() {
5 5 tradutor = new TradutorPortGlosa();
6 6 vetor_pts = new vector<int64_t >();
  7 + try{
  8 + reader = new PropertyHandler("vlibras_user/.vlibras-conf/configuration/params-vbox.conf");
  9 + }catch(RuntimeException &ex){printf("%s\n", ex.getMessage().c_str());}
7 10 numero_legendas = INT_MAX;
8 11 legendas_enviadas = 0;
9 12 this->running = true;
... ... @@ -14,7 +17,6 @@ ServiceWindowGeneration::ServiceWindowGeneration() {
14 17 ServiceWindowGeneration::~ServiceWindowGeneration() {
15 18 free(vetor_pts);
16 19 free(path_libras);
17   - if (inputfile) delete inputfile;
18 20 if (mixer) delete mixer;
19 21 if (tradutor) delete tradutor;
20 22 if (sincronizador) delete sincronizador;
... ... @@ -74,11 +76,18 @@ void ServiceWindowGeneration::setTransparency(int transparency){
74 76 }
75 77  
76 78 void ServiceWindowGeneration::setPathLibras() {
  79 +
77 80 char* final_path = new char[MAX_SIZE_PATH];
78   - strcpy(final_path, "vlibras_user/vlibras-api/uploads/");
79   - strcat(final_path, this->user_id);
80   - strcat(final_path, "/libras.ts");
81 81  
  82 + if(strcmp(client_type, (char*)WEB_USER) == 0){
  83 + strcpy(final_path, "vlibras_user/vlibras-api/uploads/");
  84 + strcat(final_path, this->user_id);
  85 + strcat(final_path, "/libras.ts");
  86 + }else{
  87 + strcpy(final_path, PATH_CONTENTS);
  88 + strcat(final_path, "libras.ts");
  89 + }
  90 +
82 91 this->path_libras = final_path;
83 92 //DDPRINTF("Path TS File: %s\n", this->path_libras);
84 93 }
... ... @@ -102,7 +111,7 @@ bool ServiceWindowGeneration::isRunning() {
102 111 void ServiceWindowGeneration::notifyEndOfSynchronization() {
103 112 if (serviceType == SERVICE_TYPE_REC || serviceType == SERVICE_TYPE_SRT) {
104 113 mixer = new Mixer();
105   - mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id);
  114 + mixer->initialize(this->path_input, this->path_libras,this->position,this->size,this->transparency, this->user_id, this->client_type);
106 115 createThumbnail();
107 116 }else{
108 117 transcodeVideoToMp4();
... ... @@ -112,8 +121,12 @@ void ServiceWindowGeneration::notifyEndOfSynchronization() {
112 121  
113 122 void ServiceWindowGeneration::initialize() {
114 123  
  124 + cout << "entrei" << endl;
  125 +
115 126 setPathLibras();
116 127  
  128 + cout << "passei" << endl;
  129 +
117 130 if (this->sublanguage == 1) {
118 131 tradutor->addListener(this);
119 132 }
... ... @@ -204,7 +217,7 @@ void ServiceWindowGeneration::transcodeVideoToWebm() {
204 217 string command = "ffmpeg -i ";
205 218 command.append(path_libras)
206 219 .append(" -vcodec libvpx -acodec libvorbis ")
207   - .append(" -v quiet ")
  220 + //.append(" -v quiet ")
208 221 .append(PATH_API)
209 222 .append(getUserId())
210 223 .append(".webm");
... ... @@ -213,32 +226,60 @@ void ServiceWindowGeneration::transcodeVideoToWebm() {
213 226 }
214 227  
215 228 void ServiceWindowGeneration::transcodeVideoToMp4() {
216   - if (serviceType == SERVICE_TYPE_TEXT && strcmp(client_type, (char*)"WEB") == 0)
217   - transcodeVideoToWebm();
218   - else{
  229 + //if (serviceType == SERVICE_TYPE_TEXT && strcmp(client_type, (char*)"WEB") == 0)
  230 + // transcodeVideoToWebm();
  231 + //else{
219 232 //printf("[INFO]: A transcodificação para .mp4 está ativada!\n");
220 233 DDDPRINTF("[AGUARDE] Transcodificando o vídeo de Libras...\n");
221 234 string command = "ffmpeg -i ";
222 235 command.append(path_libras)
223   - .append(" -qscale 0 -strict experimental -vcodec libx264 -preset fast -r 30 ")
224   - .append(" -v quiet ")
225   - .append(PATH_API)
226   - .append(getUserId())
227   - .append(".mp4");
  236 + .append(" -qscale 0 -strict experimental -vcodec libx264 -preset fast -r 30 ");
  237 + //.append(" -v quiet ");
  238 +
  239 + if(strcmp(client_type, (char*)WEB_USER) == 0){
  240 + command.append(PATH_API).append(getUserId());
  241 +
  242 + }else{
  243 + try{
  244 + char* vPath = new char[256];
  245 + vPath = reader->getAttributeValue("STORAGE");
  246 + command.append(vPath).append("/").append(getUserId());
  247 + }catch(RuntimeException &ex){
  248 + printf("%s\n", ex.getMessage().c_str());
  249 + }
  250 + }
  251 +
  252 + command.append(".mp4");
228 253 //printf("[INFO]: Transcodification command -> %s\n", command.c_str());
229 254 system(command.c_str());
230 255  
231 256 //.append(" -strict experimental -vcodec mjpeg -r 30 -pix_fmt yuvj422p ")
232 257 //.append(" -strict experimental -vcodec mpeg2video -r 30 ")
233   - }
  258 + //}
234 259 }
235 260  
236 261 void ServiceWindowGeneration::createThumbnail(){
237 262 string command = "ffmpeg -ss 10 -i ";
238   - command.append(PATH_API).append(user_id).append(".mp4")
239   - .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ")
240   - .append(" -v quiet ")
241   - .append(PATH_API).append(user_id).append(".png");
  263 + //command.append(PATH_API).append(user_id).append(".mp4")
  264 + //.append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ");
  265 + //.append(" -v quiet ");
  266 +
  267 + if(strcmp(client_type, (char*)WEB_USER) == 0){
  268 + command.append(PATH_API).append(user_id).append(".mp4")
  269 + .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ")
  270 + .append(PATH_API).append(getUserId());
  271 + }else{
  272 + try{
  273 + char* pPath = new char[256];
  274 + pPath = reader->getAttributeValue("STORAGE");
  275 + command.append(pPath).append("/").append(getUserId());
  276 + }catch(RuntimeException &ex){
  277 + printf("%s\n", ex.getMessage().c_str());
  278 + }
  279 +
  280 + command.append(PATH_CONTENTS).append(user_id).append(".mp4")
  281 + .append(" -vcodec png -vframes 1 -an -f rawvideo -y -vf scale=200:200 ");
  282 + }
  283 + command.append(".png");
242 284 system(command.c_str());
243   -}
244   -
  285 +}
245 286 \ No newline at end of file
... ...
servico/src/serviceWindowGenerationFromREC.cpp
... ... @@ -16,7 +16,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC(
16 16 }
17 17  
18 18 ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC(
19   - char* path_video, int sublanguage, int position, int size, int transparency, char* id, int serviceType) {
  19 + char* path_video, int sublanguage, int position, int size, int transparency, char* id, char* client_type, int _serviceType) {
20 20  
21 21 setPathInput(path_video);
22 22 setSubLanguage(sublanguage);
... ... @@ -24,6 +24,7 @@ ServiceWindowGenerationFromREC::ServiceWindowGenerationFromREC(
24 24 setSize(size);
25 25 setTransparency(transparency);
26 26 setServiceType(serviceType);
  27 + setClientType(client_type);
27 28 setUserId(id);
28 29 rec = new Recognize(path_video, id);
29 30 finish = false;
... ...
servico/src/serviceWindowGenerationFromSRT.cpp
1 1 #include "serviceWindowGenerationFromSRT.h"
2 2  
3 3  
4   -//Construtor Service 2
5   -ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(
6   - char* path_video, char* path_srt, int sublanguage, int position, int size, int transparency, char* id, int serviceType) {
  4 +//Construtor Service 1
  5 +ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_video, char* path_srt, int sublanguage,
  6 + int position, int size, int transparency, char* id, char* client_type, int serviceType) {
  7 +
  8 + // cout << "video: " << path_video << endl;
  9 + // cout << "srt: " << path_srt << endl;
  10 + // cout << "language: " << sublanguage << endl;
  11 + // cout << "position: " << position << endl;
  12 + // cout << "size: " << size << endl;
  13 + // cout << "transparency: " << transparency << endl;
  14 + // cout << "id: " << id << endl;
  15 + // cout << "serviceType: " << serviceType << endl;
  16 + //cout << "client_type: " << client_type << endl;
  17 +
7 18 extrator_factory = new ExtratorFactory();
8 19 setPathInput(path_video);
9 20 setPathSRT(path_srt);
  21 + setClientType(client_type);
10 22 setPosition(position);
11 23 setSize(size);
12 24 setTransparency(transparency);
... ... @@ -17,10 +29,11 @@ ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(
17 29 DPRINTF("Done!\n");
18 30 }
19 31  
20   -//Construtor Service 5
21   -ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, int serviceType){
  32 +//Construtor Service 4
  33 +ServiceWindowGenerationFromSRT::ServiceWindowGenerationFromSRT(char* path_srt, int transparency, char* id, char* client_type, int _serviceType) {
22 34 extrator_factory = new ExtratorFactory();
23 35 setPathInput(path_srt);
  36 + setClientType(client_type);
24 37 setTransparency(transparency);
25 38 setServiceType(serviceType);
26 39 setUserId(id);
... ... @@ -67,11 +80,11 @@ void ServiceWindowGenerationFromSRT::initialize() {
67 80  
68 81 //codigo abaixo sera arrumado apos a aplicação do factory pattern
69 82  
70   - if(serviceType == 2){
  83 + if(serviceType == 1){
71 84  
72 85 extratorSRT = (ExtratorSRT*)extrator_factory->getExtrator(SRT);
73 86 extratorSRT->addListener(this);
74   - extratorSRT->setFilePath((char*) path_srt);
  87 + extratorSRT->setFilePath(path_srt);
75 88  
76 89 ServiceWindowGeneration::initialize();
77 90  
... ... @@ -88,7 +101,7 @@ void ServiceWindowGenerationFromSRT::initialize() {
88 101 objeto InputFile().*/
89 102 extratorSRT = (ExtratorSRT*)extrator_factory->getExtrator(SRT);
90 103 extratorSRT->addListener(this);
91   - extratorSRT->setFilePath((char*) path_input);
  104 + extratorSRT->setFilePath(path_input);
92 105  
93 106 ServiceWindowGeneration::initialize();
94 107  
... ...
servico/src/serviceWindowGenerationFromText.cpp
... ... @@ -10,7 +10,6 @@ ServiceWindowGenerationFromText::ServiceWindowGenerationFromText (
10 10 setTransparency(transp);
11 11 setServiceType(serviceType);
12 12 finish = false;
13   - DPRINTF("Done!\n");
14 13 }
15 14  
16 15 ServiceWindowGenerationFromText::~ServiceWindowGenerationFromText() {
... ...
util/src/include/logger.h
... ... @@ -17,6 +17,7 @@
17 17 #include <stddef.h>
18 18 #include <iostream>
19 19 #include <ctime>
  20 +#include "property.h"
20 21 //#include <lavidlib/utils/Logger.h>
21 22  
22 23  
... ... @@ -31,7 +32,9 @@ namespace Util {
31 32 public:
32 33 static Logger* Instance();
33 34 void openLogFile();
34   - void writeLog(char* exception);
  35 + void openInfoLogFile(char* filepath);
  36 + void writeLog(char* log);
  37 + void writeInfoLog(char* filepath ,char* infoLog);
35 38 void closeLogFile();
36 39 char* getTime();
37 40  
... ...
util/src/include/property.h 0 → 100644
... ... @@ -0,0 +1,48 @@
  1 +/***************************************************************************
  2 + * Universidade Federal da Paraíba *
  3 + * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital *
  4 + * *
  5 + * Centro de Informática - UFPB - Campus I *
  6 + * João Pessoa - PB - Brasil *
  7 + * *
  8 + * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) *
  9 + * Date: Qui Nov 28 14:05:39 BRT 2013 *
  10 + * *
  11 + **************************************************************************/
  12 +
  13 + #ifndef PROPERTY_H
  14 + #define PROPERTY_H
  15 +
  16 + #include "logger.h"
  17 + #include <stdio.h>
  18 + #include <stdlib.h>
  19 + #include <string>
  20 + #include <string.h>
  21 + #include <lavidlib/io/BufferedReader.h>
  22 + #include <lavidlib/io/FileIO.h>
  23 + #include <lavidlib/io/IOException.h>
  24 + #include <lavidlib/io/EOFException.h>
  25 + #include <lavidlib/base/RuntimeException.h>
  26 +
  27 + #define EXTENSION ".conf"
  28 +
  29 + using namespace std;
  30 + using namespace lavidlib;
  31 +
  32 + namespace sndesc {
  33 +
  34 + class PropertyHandler {
  35 + public:
  36 + PropertyHandler(string filename);
  37 + virtual ~PropertyHandler();
  38 + char* getAttributeValue(string attr);
  39 +
  40 + private:
  41 + BufferedReader* rbuffer;
  42 + FileIO* file_property;
  43 + int checkFileExtension(string &filename);
  44 +
  45 + };
  46 + }
  47 +
  48 + #endif /* PROPERTY_H */
0 49 \ No newline at end of file
... ...
util/src/logger.cpp
... ... @@ -30,6 +30,9 @@ namespace Util {
30 30 file.open("vlibras_user/vlibras-core/log/log", ios_base::app);
31 31 }
32 32  
  33 + void Logger::openInfoLogFile(char* filepath){
  34 + file.open(filepath , ios_base::trunc);
  35 + }
33 36  
34 37 void Logger::closeLogFile(){
35 38 file.close();
... ... @@ -46,6 +49,12 @@ namespace Util {
46 49 file << getTime();
47 50 file << exception << "\n\n\r";
48 51 this->closeLogFile();
49   - }
50   -
  52 + }
  53 +
  54 + void Logger::writeInfoLog(char* filepath ,char* infoLog){
  55 + this->openInfoLogFile(filepath);
  56 + file << getTime();
  57 + file << infoLog << "\n\r";
  58 + this->closeLogFile();
  59 + }
51 60 }
... ...
util/src/property.cpp 0 → 100644
... ... @@ -0,0 +1,79 @@
  1 +/***************************************************************************
  2 + * Universidade Federal da Paraíba *
  3 + * Copyright (C) 2013 by Laboratório de Aplicações de Vídeo Digital *
  4 + * *
  5 + * Centro de Informática - UFPB - Campus I *
  6 + * João Pessoa - PB - Brasil *
  7 + * *
  8 + * Author: Leonardo de Araújo Domingues (leonardo.araujo@lavid.ufpb.br) *
  9 + * Date: Qui Nov 28 14:06:10 BRT 2013 *
  10 + * *
  11 + **************************************************************************/
  12 +
  13 + #include "property.h"
  14 +
  15 + using namespace std;
  16 +
  17 + namespace sndesc {
  18 +
  19 + PropertyHandler::PropertyHandler(string filename) {
  20 +
  21 + try {
  22 + if (checkFileExtension(filename) != 1)
  23 + throw new RuntimeException("Format file not is recognized!");
  24 + file_property = new FileIO(filename, FileIO::MODE_READ);
  25 + } catch (IOException &ex) {
  26 + printf("[FAILED] Can't open file %s\n%s\n", filename.c_str(),
  27 + ex.getMessage().c_str());
  28 + }
  29 + }
  30 +
  31 + PropertyHandler::~PropertyHandler() {
  32 + if (rbuffer)
  33 + delete rbuffer;
  34 + if (file_property)
  35 + delete file_property;
  36 + }
  37 +
  38 + char* PropertyHandler::getAttributeValue(string attr) {
  39 +
  40 + char* value1;
  41 + char* value2;
  42 +
  43 + rbuffer = new BufferedReader(file_property);
  44 + string fline;
  45 + try {
  46 + int target_pos = -1, begin = 0;
  47 + string attr_t, value_t;
  48 + while((fline = rbuffer->readLine()).size() > 0) {
  49 + target_pos = fline.find("=");
  50 + if (target_pos < 2)
  51 + throw new RuntimeException("The assignment symbol was not found.");
  52 +
  53 + attr_t = fline.substr(begin, target_pos);
  54 + begin = target_pos+1;
  55 + value_t = fline.substr(begin, fline.size());
  56 +
  57 + if (attr.compare(attr_t) == 0) {
  58 + file_property->seek(0);
  59 + value1 = new char[value_t.length() + 1];
  60 + strcpy(value1, value_t.c_str());
  61 + return value1;
  62 + }
  63 + target_pos = -1;
  64 + begin = 0;
  65 + }
  66 + } catch (lavidlib::EOFException &ex) {
  67 + printf("[INFO] File is completed.\n%s\n", ex.getMessage().c_str());
  68 + }
  69 + file_property->seek(0);
  70 + strcpy(value2, fline.c_str());
  71 + return value2;
  72 + }
  73 +
  74 + int PropertyHandler::checkFileExtension(string &filename) {
  75 +
  76 + return (filename.find(EXTENSION) > 0 &&
  77 + (filename.size() == (filename.find(EXTENSION) + strlen(EXTENSION)))) ? 1 : -1;
  78 + }
  79 + }
0 80 \ No newline at end of file
... ...