View Javadoc

1   /*
2    * Created on 27.04.2005
3    *
4    */
5   package hoplugins.conv;
6   
7   
8   
9   import java.awt.Dimension;
10  import java.awt.Point;
11  import java.io.BufferedReader;
12  import java.io.ByteArrayInputStream;
13  import java.io.File;
14  import java.io.FileInputStream;
15  import java.io.FileOutputStream;
16  import java.io.IOException;
17  import java.io.InputStreamReader;
18  import java.io.OutputStreamWriter;
19  import java.io.Reader;
20  
21  import javax.swing.JFileChooser;
22  import javax.swing.JFrame;
23  import javax.swing.JOptionPane;
24  import javax.xml.parsers.DocumentBuilder;
25  import javax.xml.parsers.DocumentBuilderFactory;
26  import javax.xml.parsers.ParserConfigurationException;
27  
28  import org.w3c.dom.Document;
29  import org.w3c.dom.Element;
30  import org.w3c.dom.NodeList;
31  import org.w3c.dom.Text;
32  import org.xml.sax.SAXException;
33  
34  import plugins.IDebugWindow;
35  
36  
37  /***
38   * @author Thorsten Dietz
39   *
40   */
41  abstract class HrfMaker {
42  
43      protected String[][] clubValue = null;
44      protected String[][] basicsValue;
45      protected String[][] arenaValue = null;
46      protected String[][] teamValue = null;
47      protected String[][] leagueValue = null;
48      protected String[][] linupValue = null;
49      protected String[][] lastlinupValue = null;
50      protected String[][] xtraValue = null;
51      protected String[][] economyValue = null;
52      protected String[][] playerValue = null;
53      protected String type = " ";
54      
55      protected IDebugWindow window;
56      protected final String convertNumber(int number) {
57          return number < 10 ? "0" + number : number + "";
58      }
59      
60      protected void debug(String txt){
61          if(window == null)
62              window = RSC.MINIMODEL.getGUI().createDebugWindow(
63      				new Point(100, 200),
64      				new Dimension(700, 400));
65          window.setVisible(true);
66          window.append(txt);
67      }
68      protected void debug(Exception e){
69          if(window == null)
70              window = RSC.MINIMODEL.getGUI().createDebugWindow(
71      				new Point(100, 200),
72      				new Dimension(700, 400));
73          window.setVisible(true);
74          window.append(e);
75      }
76      
77      protected abstract void start(File[] selectedFiles,File targetDir);
78      
79      
80      public void handleException(Exception e, String txt) {
81          if (e != null)
82              debug(e);
83          else
84              debug(txt);
85      }
86      
87      protected  File getDestinationFolder(JFrame owner) {
88  
89          File dir = null;
90          JOptionPane.showMessageDialog(null, RSC
91                  .getProperty("select_destinated_directory"));
92          JFileChooser saver = new JFileChooser();
93          saver.setDialogTitle(RSC.getProperty("select_destinated_directory"));
94          saver.setMultiSelectionEnabled(false);
95          saver.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
96          int returnSave = saver.showSaveDialog(owner);
97          if (returnSave == JFileChooser.APPROVE_OPTION) {
98              dir = saver.getSelectedFile();
99          }
100         return dir;
101     }
102     
103     protected  Document getDocument(String xmlString)
104     throws ParserConfigurationException, IOException, SAXException {
105         DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
106         DocumentBuilder builder = factory.newDocumentBuilder();
107         ByteArrayInputStream inputStream = new ByteArrayInputStream(xmlString
108         .getBytes());
109         return builder.parse(inputStream);
110     }
111     
112     protected  final String getUTF8String(File file) {
113         StringBuffer buffer = new StringBuffer();
114         try {
115             FileInputStream inputStream = new FileInputStream(file);
116             InputStreamReader reader = new InputStreamReader(inputStream,
117                     "UTF8");
118 
119             Reader in = new BufferedReader(reader);
120             int ch;
121             boolean first = true;
122             while ((ch = in.read()) > -1) {
123                 if (!first)
124                     buffer.append((char) ch);
125                 else
126                     first = false;
127 
128             }
129         } catch (Exception e) {
130             handleException(e, "Canīt read xml-file");
131         }
132         return buffer.toString();
133     }
134     protected void clearArrays() {
135         clubValue = RSC.clubValueDefault;
136         basicsValue = RSC.basicsValueDefault;
137         arenaValue = RSC.arenaValueDefault;
138         teamValue = RSC.teamValueDefault;
139         leagueValue = RSC.leagueValueDefault;
140         linupValue = RSC.linupValueDefault;
141         lastlinupValue = RSC.lastlinupValueDefault;
142         xtraValue = RSC.xtraValueDefault;
143         economyValue = RSC.economyValue;
144     }
145     
146     
147     protected void writeHrf(String filter, File dir) {
148         if (dir == null)
149             return;
150         try {
151             StringBuffer filename = new StringBuffer();
152             filename.append(dir.getAbsolutePath());
153             filename.append(File.separator);
154             filename.append(filter.substring(0, 4));
155             filename.append("-");
156             filename.append(filter.substring(4, 6));
157             filename.append("-");
158             filename.append(filter.substring(6, 8));
159             filename.append("-");
160             filename.append(type);
161             filename.append(".hrf");
162 
163             FileOutputStream out = new FileOutputStream(filename.toString(),
164                     false);
165             OutputStreamWriter fileWriter = new OutputStreamWriter(out, "UTF8");
166             writeArray(basicsValue, fileWriter);
167             writeArray(leagueValue, fileWriter);
168             writeArray(clubValue, fileWriter);
169             writeArray(teamValue, fileWriter);
170             writeArray(linupValue, fileWriter);
171             writeArray(economyValue, fileWriter);
172             writeArray(arenaValue, fileWriter);
173             writePlayerArray(playerValue, fileWriter);
174             writePlayerArray(xtraValue, fileWriter);
175             writePlayerArray(lastlinupValue, fileWriter);
176             fileWriter.flush();
177             fileWriter.close();
178 
179         } catch (Exception innerEx) {
180             IDebugWindow debugWindow = RSC.MINIMODEL.getGUI ().createDebugWindow ( new java.awt.Point( 100, 200 ), new java.awt.Dimension( 700,  400 ) );
181             debugWindow.setVisible ( true );
182             debugWindow.append ( innerEx );
183         }
184     }
185 
186     protected static final void writeArray(String[][] value,
187             OutputStreamWriter file) throws IOException {
188         for (int i = 0; i < value.length; i++) {
189             file.write(value[i][0] + value[i][1] + "\n");
190         }
191     }
192 
193     protected static final void writePlayerArray(String[][] value,
194             OutputStreamWriter file) throws IOException {
195         for (int x = 1; x < value[0].length; x++) {
196             for (int i = 0; i < value.length; i++) {
197                 file.write(value[i][0] + value[i][x] + "\n");
198             }//zeilen
199         }// Spalten
200     }
201     protected final void addBasics() {
202         if (RSC.MINIMODEL != null) {
203             basicsValue[2][1] = "" + RSC.MINIMODEL.getHOVersion();
204         }
205     }
206     
207     protected void setTag(Element element,String[][] value,int index){
208         setTag(element,value,index,1);
209     }
210     
211     protected void setTag(Element element,String[][] value,int index,int index2){
212         Text txt = (Text) element.getFirstChild();
213         if (txt == null)
214            return;
215         String tagValue = txt.getData();
216         if (tagValue == null)
217             return;
218         value[index][index2] = tagValue.trim();
219     }
220     
221     protected static void convert( byte type, File[] selectedFiles){
222         HrfMaker tmp = null;
223         switch(type) {
224         case RSC.TYPE_BUDDY: tmp = new Buddy();break;
225         case RSC.TYPE_HAM: tmp = new HAM();break;
226         case RSC.TYPE_HTFOREVER: tmp = new HTForever();break;
227         case RSC.TYPE_HTCOACH: tmp = new HTCoach();break;
228         }
229         
230         tmp.start(selectedFiles,tmp.getDestinationFolder(RSC.MINIMODEL.getGUI().getOwner4Dialog()));
231     }
232     protected void analyzeTeamDetails(NodeList nodelist){
233 
234         for (int i = 0; i < nodelist.getLength(); i++) {
235             if (nodelist.item(i) instanceof Element) {
236                 Element element = (Element) nodelist.item(i);
237 
238                 if (element.getTagName().equals("HattrickData")) {
239                     analyzeTeamDetails(nodelist.item(i).getChildNodes());
240                     continue;
241                 }
242                 if (element.getTagName().equals("FetchedDate")) {
243                     setTag(element,basicsValue,3);
244                     continue;
245                 }
246                 if (element.getTagName().equals("Team")) {
247                     analyzeTeamDetails(nodelist.item(i).getChildNodes());
248                     continue;
249                 }
250                 if (element.getTagName().equals("League")) {
251                     analyzeTeamDetails(nodelist.item(i).getChildNodes());
252                     continue;
253                 }
254                 if (element.getTagName().equals("LeagueLevelUnit")) {
255                     analyzeTeamDetails(nodelist.item(i).getChildNodes());
256                     continue;
257                 }
258                 if (element.getTagName().equals("User")) {
259                     analyzeTeamDetails(nodelist.item(i).getChildNodes());
260                     continue;
261                 }
262                 if (element.getTagName().equals("TeamID")) {
263                     setTag(element,basicsValue,6);
264                     continue;
265                 }
266                 if (element.getTagName().equals("TeamName")) {
267                     setTag(element,basicsValue,7);
268                     continue;
269                 }
270                 if (element.getTagName().equals("HomePage")) {
271                     setTag(element,basicsValue,11);
272                     continue;
273                 }
274                 if (element.getTagName().equals("LogoURL")) {
275                     setTag(element,xtraValue,6);
276                     continue;
277                 }
278                 if (element.getTagName().equals("Email")) {
279                     setTag(element,basicsValue,9);
280                     continue;
281                 }
282                 if (element.getTagName().equals("Name")) {
283                     setTag(element,basicsValue,8);
284                     continue;
285                 }
286                 if (element.getTagName().equals("ICQ")) {
287                     setTag(element,basicsValue,10);
288                     continue;
289                 }
290                 if (element.getTagName().equals("Loginname")) {
291                     setTag(element,basicsValue,8);
292                     continue;
293                 }
294                 if (element.getTagName().equals("PlayerID")) {
295                     setTag(element,xtraValue,8);
296                     continue;
297                 }
298                 if (element.getTagName().equals("NumberOfVictories")) {
299                     setTag(element,clubValue,10);
300                     continue;
301                 }
302                 if (element.getTagName().equals("NumberOfUndefeated")) {
303                     setTag(element,clubValue,9);
304                     continue;
305                 }
306                 if (element.getTagName().equals("LeagueLevelUnitName")) {
307                     setTag(element,leagueValue,1);
308                     continue;
309                 }
310                 if (element.getTagName().equals("LeagueID")) {
311                     setTag(element,basicsValue,13);
312                     continue;
313                 }
314                 if (element.getTagName().equals("LeagueLevelUnitID")) {
315                     setTag(element,xtraValue,11);
316                     continue;
317                 }
318             } // if Element
319         } // for    
320     }
321     
322     protected void analyzeClub(NodeList nodelist){
323         for (int i = 0; i < nodelist.getLength(); i++) {
324             if (nodelist.item(i) instanceof Element) {
325                 Element element = (Element) nodelist.item(i);
326                 if (element.getTagName().equals("HattrickData")) {
327                     analyzeClub(nodelist.item(i).getChildNodes());
328                 }
329                 if (element.getTagName().equals("Team")) {
330                     analyzeClub(nodelist.item(i).getChildNodes());
331                 }
332                 if (element.getTagName().equals("YouthSquad")) {
333                     analyzeClub(nodelist.item(i).getChildNodes());
334                 }
335                 
336                 if (element.getTagName().equals("Specialists")) {
337                     analyzeClub(nodelist.item(i).getChildNodes());
338                 }
339                 if (element.getTagName().equals("KeeperTrainers")) {
340                     setTag(element,clubValue,1);
341                 }
342                 if (element.getTagName().equals("AssistantTrainers")) {
343                     setTag(element,clubValue,2);
344                 }
345                 if (element.getTagName().equals("Psychologists")) {
346                     setTag(element,clubValue,3);
347                 }
348                 if (element.getTagName().equals("PressSpokesmen")) {
349                     setTag(element,clubValue,4);
350                 }
351                 if (element.getTagName().equals("Economists")) {
352                     setTag(element,clubValue,5);
353                 }
354                 if (element.getTagName().equals("Physiotherapists")) {
355                     setTag(element,clubValue,6);
356                 }
357                 if (element.getTagName().equals("Doctors")) {
358                     setTag(element,clubValue,7);
359                 }
360                 if (element.getTagName().equals("YouthLevel")) {
361                     setTag(element,clubValue,8);
362                 }
363                 if (element.getTagName().equals("HasPromoted")) {
364                     setTag(element,xtraValue,7);
365                 }
366                  
367 	   } // if
368 	}// for
369     }
370     /***
371      * @param childNodes
372      */
373     protected void analyzeArena(NodeList nodelist) {
374 
375         for (int i = 0; i < nodelist.getLength(); i++) {
376             if (nodelist.item(i) instanceof Element) {
377                 Element element = (Element) nodelist.item(i);
378                 if (element.getTagName().equals("HattrickData")) {
379                     analyzeArena(nodelist.item(i).getChildNodes());
380                 }
381                 if (element.getTagName().equals("Team")) {
382                     analyzeArena(nodelist.item(i).getChildNodes());
383                 }
384                 if (element.getTagName().equals("CurrentCapacity")) {
385                     analyzeArena(nodelist.item(i).getChildNodes());
386                 }
387                 if (element.getTagName().equals("Arena")) {
388                     analyzeArena(nodelist.item(i).getChildNodes());
389                     continue;
390                 }
391                 if (element.getTagName().equals("League")) {
392                     analyzeArena(nodelist.item(i).getChildNodes());
393                     continue;
394                 }
395                 
396                 if (element.getTagName().equals("ArenaName")) {
397                     setTag(element,arenaValue,1);
398                     continue;
399                 }
400                 if (element.getTagName().equals("RebuiltDate")) {
401                     setTag(element,arenaValue,13);
402                     continue;
403                 }
404                 if (element.getTagName().equals("Terraces")) {
405                     setTag(element,arenaValue,2);
406                     continue;
407                 }
408                 if (element.getTagName().equals("Basic")) {
409                     setTag(element,arenaValue,3);
410                     continue;
411                 }
412                 if (element.getTagName().equals("Roof")) {
413                     setTag(element,arenaValue,4);
414                     continue;
415                 }
416                 if (element.getTagName().equals("VIP")) {
417                     setTag(element,arenaValue,5);
418                     continue;
419                 }
420                 if (element.getTagName().equals("Total")) {
421                     setTag(element,arenaValue,6);
422                     continue;
423                 }
424                 
425             } // if
426         } // for
427     }
428     
429     protected void analyzeEconomy(NodeList nodelist){
430 
431         for (int i = 0; i < nodelist.getLength(); i++) {
432             if (nodelist.item(i) instanceof Element) {
433                 Element element = (Element) nodelist.item(i);
434                 if (element.getTagName().equals("HattrickData")) {
435                     analyzeEconomy(nodelist.item(i).getChildNodes());
436                 }
437                 if (element.getTagName().equals("Team")) {
438                     analyzeEconomy(nodelist.item(i).getChildNodes());
439                 }
440                 if (element.getTagName().equals("Cash")) {
441                     setTag(element,economyValue,3);
442                 }
443                 
444                 if (element.getTagName().equals("SponsorsPopularity")) {
445                     setTag(element,economyValue,2);
446                 }
447                 if (element.getTagName().equals("SupportersPopularity")) {
448                     setTag(element,economyValue,1);
449                 }
450                 if (element.getTagName().equals("FanClubSize")) {
451                     setTag(element,clubValue,11);
452                 }
453                 if (element.getTagName().equals("IncomeSpectators")) {
454                     setTag(element,economyValue,5);
455                 }
456                 if (element.getTagName().equals("IncomeSponsors")) {
457                     setTag(element,economyValue,4);
458                 }
459                 if (element.getTagName().equals("IncomeFinancial")) {
460                     setTag(element,economyValue,6);
461                 }
462                 if (element.getTagName().equals("IncomeTemporary")) {
463                     setTag(element,economyValue,7);
464                 }
465                 if (element.getTagName().equals("IncomeSum")) {
466                     setTag(element,economyValue,8);
467                 }
468                 if (element.getTagName().equals("CostsArena")) {
469                     setTag(element,economyValue,11);
470                 }
471                 if (element.getTagName().equals("CostsPlayers")) {
472                     setTag(element,economyValue,9);
473                 }
474                 if (element.getTagName().equals("CostsFinancial")) {
475                     setTag(element,economyValue,13);
476                 }
477                 if (element.getTagName().equals("CostsTemporary")) {
478                     setTag(element,economyValue,14);
479                 }
480                 if (element.getTagName().equals("CostsStaff")) {
481                     setTag(element,economyValue,10);
482                 }
483                 if (element.getTagName().equals("CostsYouth")) {
484                     setTag(element,economyValue,12);
485                 }
486                 if (element.getTagName().equals("CostsSum")) {
487                     setTag(element,economyValue,15);
488                 }
489                 if (element.getTagName().equals("ExpectedWeeksTotal")) {
490                     setTag(element,economyValue,16);
491                 }
492                 if (element.getTagName().equals("LastIncomeSpectators")) {
493                     setTag(element,economyValue,18);
494                 }
495                 if (element.getTagName().equals("LastIncomeSponsors")) {
496                     setTag(element,economyValue,17);
497                 }
498                 if (element.getTagName().equals("LastIncomeFinancial")) {
499                     setTag(element,economyValue,19);
500                 }
501                 if (element.getTagName().equals("LastIncomeTemporary")) {
502                     setTag(element,economyValue,20);
503                 }
504                 if (element.getTagName().equals("LastIncomeSum")) {
505                     setTag(element,economyValue,21);
506                 }
507                 if (element.getTagName().equals("LastCostsArena")) {
508                     setTag(element,economyValue,24);
509                 }
510                 if (element.getTagName().equals("LastCostsPlayers")) {
511                     setTag(element,economyValue,22);
512                 }
513                 if (element.getTagName().equals("LastCostsFinancial")) {
514                     setTag(element,economyValue,26);
515                 }
516                 if (element.getTagName().equals("LastCostsTemporary")) {
517                     setTag(element,economyValue,27);
518                 }
519                 if (element.getTagName().equals("LastCostsStaff")) {
520                     setTag(element,economyValue,23);
521                 }
522                 if (element.getTagName().equals("LastCostsYouth")) {
523                     setTag(element,economyValue,25);
524                 }
525                 if (element.getTagName().equals("LastCostsSum")) {
526                     setTag(element,economyValue,28);
527                 }
528                 if (element.getTagName().equals("LastWeeksTotal")) {
529                     setTag(element,economyValue,29);
530                 }
531           //      ExpectedCash
532              
533             } // if element
534         }//for
535     }
536     /***
537      * @param childNodes
538      */
539     protected void analyzeTraining(NodeList nodelist) {
540 
541         for (int i = 0; i < nodelist.getLength(); i++) {
542             if (nodelist.item(i) instanceof Element) {
543                 Element element = (Element) nodelist.item(i);
544                 if (element.getTagName().equals("HattrickData")) {
545                     analyzeTraining(nodelist.item(i).getChildNodes());
546                 }
547                 if (element.getTagName().equals("Team")) {
548                     analyzeTraining(nodelist.item(i).getChildNodes());
549                 }
550                 if (element.getTagName().equals("Trainer")) {
551                     analyzeTraining(nodelist.item(i).getChildNodes());
552                 }
553                 if (element.getTagName().equals("TrainingLevel")) {
554                     setTag(element,teamValue,1);
555                     continue;
556                 }
557                 if (element.getTagName().equals("TrainingType")) {
558                     setTag(element,teamValue,2);
559                     Integer skill = new Integer(teamValue[2][1]);
560                     teamValue[3][1] = RSC.MINIMODEL.getHelper().getNameForTraining(
561                             skill.intValue());
562                     continue;
563                 }
564                 if (element.getTagName().equals("TrainerID")) {
565                     setTag(element,xtraValue,8);
566                     continue;
567                 }
568                 if (element.getTagName().equals("TrainerName")) {
569                     setTag(element,xtraValue,9);
570                     continue;
571                 }
572                 if (element.getTagName().equals("ArrivalDate")) {
573                     setTag(element,xtraValue,10);
574                     continue;
575                 }
576                 if (element.getTagName().equals("Morale")) {
577                     setTag(element,teamValue,4);
578                     Integer skill = new Integer(teamValue[4][1]);
579                     teamValue[5][1] = RSC.MINIMODEL.getHelper()
580                             .getNameForTeamspirit(skill.intValue());
581                     continue;
582                 }
583                 if (element.getTagName().equals("SelfConfidence")) {
584                     setTag(element,teamValue,7);
585                     Integer skill = new Integer(teamValue[7][1]);
586                     teamValue[7][1] = RSC.MINIMODEL.getHelper()
587                             .getNameForConfidence(skill.intValue());
588                     continue;
589                 }
590                 if (element.getTagName().equals("Experience433")) {
591                     setTag(element,teamValue,8);
592                     continue;
593                 }
594                 if (element.getTagName().equals("Experience451")) {
595                     setTag(element,teamValue,9);
596                     continue;
597                 }
598                 if (element.getTagName().equals("Experience352")) {
599                     setTag(element,teamValue,10);
600                     continue;
601                 }
602                 if (element.getTagName().equals("Experience532")) {
603                     setTag(element,teamValue,11);
604                     continue;
605                 }
606                 if (element.getTagName().equals("Experience343")) {
607                     setTag(element,teamValue,12);
608                     continue;
609                 }
610                 if (element.getTagName().equals("Experience541")) {
611                     setTag(element,teamValue,13);
612                     continue;
613                 }
614                 
615             } // if
616         } // for
617         
618     }
619     /***
620      * @param childNodes
621      */
622     protected void analyzeWorldDetail(NodeList nodelist) {
623 
624         for (int i = 0; i < nodelist.getLength(); i++) {
625             if (nodelist.item(i) instanceof Element) {
626                 Element element = (Element) nodelist.item(i);
627                 if (element.getTagName().equals("League")) {
628                     analyzeWorldDetail(nodelist.item(i).getChildNodes());
629                     continue;
630                 }
631                 if (element.getTagName().equals("LeagueList")) {
632                     analyzeWorldDetail(nodelist.item(i).getChildNodes());
633                     continue;
634                 }
635                 if (element.getTagName().equals("Country")) {
636                     analyzeWorldDetail(nodelist.item(i).getChildNodes());
637                     continue;
638                 }
639                 if (element.getTagName().equals("CurrencyName")) {
640                     setTag(element,xtraValue,4);
641                     continue;
642                 }
643                 if (element.getTagName().equals("CurrencyRate")) {
644                     setTag(element,xtraValue,5);
645                     continue;
646                 }
647                 if (element.getTagName().equals("CountryID")) {
648                     setTag(element,basicsValue,12);
649                     continue;
650                 }
651                 if (element.getTagName().equals("MatchRound")) {
652                     setTag(element,basicsValue,5);
653                     continue;
654                 }
655                 if (element.getTagName().equals("Season")) {
656                     setTag(element,basicsValue,4);
657                     continue;
658                 }
659                 if (element.getTagName().equals("LeagueID")) {
660                     setTag(element,basicsValue,13);
661                     continue;
662                 }
663                 if (element.getTagName().equals("TrainingDate")) {
664                     setTag(element,xtraValue,1);
665                     continue;
666                 }
667                 if (element.getTagName().equals("EconomyDate")) {
668                     setTag(element,xtraValue,2);
669                     continue;
670                 }
671                 if (element.getTagName().equals("SeriesMatchDate")) {
672                     setTag(element,xtraValue,3);
673                     continue;
674                 }
675             } // if
676         }// for
677         
678     }
679     
680     protected void analyzeSinglePlayer(NodeList nodelist,
681             int index) {
682 
683         for (int i = 0; i < nodelist.getLength(); i++) {
684             if (nodelist.item(i) instanceof Element) {
685                 Element element = (Element) nodelist.item(i);
686                
687                 if (element.getTagName().equals("PlayerID")) {
688                     setTag(element,playerValue,0,index);
689                     playerValue[0][index] =  playerValue[0][index]+"]";
690                     continue;
691                 }
692                 if (element.getTagName().equals("PlayerName")) {
693                     setTag(element,playerValue,1,index);
694                     continue;
695                 }
696                 if (element.getTagName().equals("PlayerNumber")) {
697                     setTag(element,playerValue,35,index);
698                     continue;
699                 }
700                 if (element.getTagName().equals("Age")) {
701                     setTag(element,playerValue,2,index);
702                     continue;
703                 }
704                 if (element.getTagName().equals("InjuryLevel")) {
705                     setTag(element,playerValue,3,index);
706                     continue;
707                 }
708                 if (element.getTagName().equals("TSI")) {
709                     setTag(element,playerValue,16,index);
710                     continue;
711                 }
712                 if (element.getTagName().equals("PlayerForm")) {
713                     setTag(element,playerValue,4,index);
714                     continue;
715                 }
716                 if (element.getTagName().equals("Experience")) {
717                     setTag(element,playerValue,13,index);
718                     continue;
719                 }
720                 if (element.getTagName().equals("Leadership")) {
721                     setTag(element,playerValue,14,index);
722                     continue;
723                 }
724                 
725                 if (element.getTagName().equals("Salary")) {
726                     setTag(element,playerValue,15,index);
727                     continue;
728                 }
729                 if (element.getTagName().equals("Agreeability")) {
730                     setTag(element,playerValue,26,index);
731                     continue;
732                 }
733                 if (element.getTagName().equals("Aggressiveness")) {
734                     setTag(element,playerValue,30,index);
735                     continue;
736                 }
737                 if (element.getTagName().equals("Honesty")) {
738                     setTag(element,playerValue,28,index);
739                     continue;
740                 }
741                 if (element.getTagName().equals("LeagueGoals")) {
742                     setTag(element,playerValue,18,index);
743                     continue;
744                 }
745                 if (element.getTagName().equals("CupGoals")) {
746                     setTag(element,playerValue,19,index);
747                     continue;
748                 }
749                 if (element.getTagName().equals("FriendliesGoals")) {
750                     setTag(element,playerValue,20,index);
751                     continue;
752                 }
753                 if (element.getTagName().equals("CareerHattricks")) {
754                     setTag(element,playerValue,21,index);
755                     continue;
756                 }
757                 if (element.getTagName().equals("CareerGoals")) {
758                     setTag(element,playerValue,17,index);
759                     continue;
760                 }
761                 if (element.getTagName().equals("Cards")) {
762                     setTag(element,playerValue,23,index);
763                     continue;
764                 }
765                 if (element.getTagName().equals("StaminaSkill")) {
766                     setTag(element,playerValue,5,index);
767                     continue;
768                 }
769                 if (element.getTagName().equals("KeeperSkill")) {
770                     setTag(element,playerValue,12,index);
771                     continue;
772                 }
773                 if (element.getTagName().equals("PlaymakerSkill")) {
774                     setTag(element,playerValue,6,index);
775                     continue;
776                 }
777                 if (element.getTagName().equals("ScorerSkill")) {
778                     setTag(element,playerValue,7,index);
779                     continue;
780                 }
781                 if (element.getTagName().equals("PassingSkill")) {
782                     setTag(element,playerValue,8,index);
783                     continue;
784                 }
785                 if (element.getTagName().equals("WingerSkill")) {
786                     setTag(element,playerValue,9,index);
787                     continue;
788                 }
789                 if (element.getTagName().equals("DefenderSkill")) {
790                     setTag(element,playerValue,11,index);
791                     continue;
792                 }
793                 if (element.getTagName().equals("SetPiecesSkill")) {
794                     setTag(element,playerValue,10,index);
795                     continue;
796                 }
797                 if (element.getTagName().equals("CountryID")) {
798                     setTag(element,playerValue,22,index);
799                     continue;
800                 }
801                 if (element.getTagName().equals("Caps")) {
802                     setTag(element,playerValue,38,index);
803                     continue;
804                 }
805                 if (element.getTagName().equals("CapsU20")) {
806                     setTag(element,playerValue,39,index);
807                     continue;
808                 }
809                 if (element.getTagName().equals("Specialty")) {
810                     setTag(element,playerValue,24,index);
811                     continue;
812                 }
813                 if (element.getTagName().equals("TransferListed")) {
814                     setTag(element,playerValue,36,index);
815                     continue;
816                 }
817                 if (element.getTagName().equals("NationalTeamID")) {
818                     setTag(element,playerValue,37,index);
819                     continue;
820                 }
821                  if (element.getTagName().equals("TrainerData")){
822                     analyzeSinglePlayer(nodelist.item(i).getChildNodes(),index);
823                     continue;
824                 }
825                 if (element.getTagName().equals("TrainerType")) {
826                     setTag(element,playerValue,32,index);
827                     continue;
828                 }
829                 if (element.getTagName().equals("TrainerSkill")) {
830                     setTag(element,playerValue,33,index);
831                     continue;
832                 }
833             }// if Element
834         } // for
835         playerValue[31][index] = RSC.MINIMODEL.getHelper().getNameForAggressivness(
836                 Integer.parseInt(playerValue[30][index]));
837         playerValue[29][index] = RSC.MINIMODEL.getHelper().getNameForCharacter(
838                 Integer.parseInt(playerValue[28][index]));
839         playerValue[27][index] = RSC.MINIMODEL.getHelper().getNameForGentleness(
840                 Integer.parseInt(playerValue[26][index]));
841         if (!playerValue[24][index].equals("0"))
842             playerValue[25][index] = RSC.MINIMODEL.getHelper()
843                     .getNameForSpeciality(
844                             Integer.parseInt(playerValue[24][index]));
845     }
846     
847     protected final void analyzeAllPlayers(NodeList nodelist) {
848         for (int i = 0; i < nodelist.getLength(); i++) {
849             if (nodelist.item(i) instanceof Element) {
850                 if (nodelist.item(i).hasChildNodes()) {
851                     Element element = (Element) nodelist.item(i);
852                     if (element.getTagName().equals("Player")) {
853                         int index = Integer.parseInt(element
854                                 .getAttribute("Index"));
855                         analyzeSinglePlayer(nodelist.item(i)
856                                 .getChildNodes(), index+1);
857                         analyzeAllPlayers(nodelist.item(i)
858                                 .getChildNodes());
859                     }
860                      
861                 }
862             } // if element
863         } // for
864     }
865     
866     protected final void initPlayersArray(NodeList nodelist) {
867         // int playerCount = 1;
868          for (int i = 0; i < nodelist.getLength(); i++) {
869 
870              if (nodelist.item(i) instanceof Element) {
871 
872                  Element element = (Element) nodelist.item(i);
873                  //Downloader.writeToLog("Element",element.getTagName());
874                  if (element.getTagName().equals("HattrickData")) {
875                      initPlayersArray(nodelist.item(i).getChildNodes());
876                  }
877                  if (element.getTagName().equals("Team")){
878                      initPlayersArray(nodelist.item(i).getChildNodes());
879                      continue;
880                  }
881                  if (element.getTagName().equals("PlayerList")) {
882                      int tmp = Integer.parseInt(element.getAttribute("Count"));
883                      //playerCount = tmp;
884                      initPlayerArray(tmp);
885                      initPlayersArray(nodelist.item(i).getChildNodes());
886                      break;
887                  }
888                  if (element.getTagName().equals("Player")) {
889                      int index = Integer.parseInt(element
890                              .getAttribute("Index"));
891                      analyzeSinglePlayer(nodelist.item(i)
892                              .getChildNodes(), index+1);
893                     // analyzeAllPlayers(nodelist.item(i)
894                     //         .getChildNodes());
895                  }
896 
897              }// if Element
898          } // for
899      }
900      
901      protected  void initPlayerArray(int playerCount){
902 
903              playerValue = new String[40][playerCount + 1];
904              playerValue[0][0] = "[player";
905              playerValue[1][0] = "name=";
906              playerValue[2][0] = "ald=";
907              playerValue[3][0] = "ska=";
908              playerValue[4][0] = "for=";
909              playerValue[5][0] = "uth=";
910              playerValue[6][0] = "spe=";
911              playerValue[7][0] = "mal=";
912              playerValue[8][0] = "fra=";
913              playerValue[9][0] = "ytt=";
914              playerValue[10][0] = "fas=";
915 
916              playerValue[11][0] = "bac=";
917              playerValue[12][0] = "mlv=";
918              playerValue[13][0] = "rut=";
919              playerValue[14][0] = "led=";
920              playerValue[15][0] = "sal=";
921              playerValue[16][0] = "mkt=";
922              playerValue[17][0] = "gev=";
923              playerValue[18][0] = "gtl=";
924              playerValue[19][0] = "gtc=";
925              playerValue[20][0] = "gtt=";
926              playerValue[21][0] = "hat=";
927 
928              playerValue[22][0] = "CountryID=";
929              playerValue[23][0] = "warnings=";
930              playerValue[24][0] = "speciality=";
931              playerValue[25][0] = "specialityLabel=";
932              playerValue[26][0] = "gentleness=";
933              playerValue[27][0] = "gentlenessLabel=";
934              playerValue[28][0] = "honesty=";
935              playerValue[29][0] = "honestyLabel=";
936              playerValue[30][0] = "Aggressiveness=";
937              playerValue[31][0] = "AggressivenessLabel=";
938              playerValue[32][0] = "TrainerType=";
939 
940              playerValue[33][0] = "TrainerSkill=";
941              playerValue[34][0] = "rating=";
942              playerValue[35][0] = "PlayerNumber=";
943              playerValue[36][0] = "TransferListed=";
944              playerValue[37][0] = "NationalTeamID=";
945              playerValue[38][0] = "Caps=";
946              playerValue[39][0] = "CapsU20=";
947 
948              for (int i = 1; i < playerValue[0].length; i++) {
949                  playerValue[0][i] = "";
950                  playerValue[1][i] = "";
951                  playerValue[2][i] = RSC.DEFAULT;
952                  playerValue[3][i] = RSC.DEFAULT;
953                  playerValue[4][i] = RSC.DEFAULT;
954                  playerValue[5][i] = RSC.DEFAULT;
955                  playerValue[6][i] = RSC.DEFAULT;
956                  playerValue[7][i] = RSC.DEFAULT;
957                  playerValue[8][i] = RSC.DEFAULT;
958                  playerValue[9][i] = RSC.DEFAULT;
959                  playerValue[10][i] = RSC.DEFAULT;
960 
961                  playerValue[10][i] = RSC.DEFAULT;
962                  playerValue[11][i] = RSC.DEFAULT;
963                  playerValue[12][i] = RSC.DEFAULT;
964                  playerValue[13][i] = RSC.DEFAULT;
965                  playerValue[14][i] = RSC.DEFAULT;
966                  playerValue[15][i] = RSC.DEFAULT;
967                  playerValue[16][i] = RSC.DEFAULT;
968                  playerValue[17][i] = RSC.DEFAULT;
969                  playerValue[18][i] = RSC.DEFAULT;
970                  playerValue[19][i] = RSC.DEFAULT;
971                  playerValue[20][i] = RSC.DEFAULT;
972 
973                  playerValue[20][i] = RSC.DEFAULT;
974                  playerValue[21][i] = RSC.DEFAULT;
975                  playerValue[22][i] = RSC.DEFAULT;
976                  playerValue[23][i] = "";
977                  playerValue[24][i] = RSC.DEFAULT;
978                  playerValue[25][i] = "";
979                  playerValue[26][i] = RSC.DEFAULT;
980                  playerValue[27][i] = "";
981                  playerValue[28][i] = RSC.DEFAULT;
982                  playerValue[29][i] = "";
983                  playerValue[30][i] = "";
984 
985                  playerValue[30][i] = "";
986                  playerValue[31][i] = "";
987                  playerValue[32][i] = "";
988                  playerValue[33][i] = "";
989                  playerValue[34][i] = RSC.DEFAULT;
990                  playerValue[35][i] = RSC.DEFAULT;
991              } // for
992         // } // if
993      }
994      protected static final Document getDocument(File file) throws ParserConfigurationException,
995      IOException, SAXException {
996          DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
997          DocumentBuilder builder = factory.newDocumentBuilder();
998          return builder.parse(file);
999      }
1000 }