PageRenderTime 27ms CodeModel.GetById 11ms app.highlight 13ms RepoModel.GetById 1ms app.codeStats 0ms

/Prototipo/Servlet/src/java/Validador.java

http://prototipomemoria.googlecode.com/
Java | 276 lines | 243 code | 11 blank | 22 comment | 1 complexity | ac84b9ebe8789b5ffd9bb1d77c59d7d7 MD5 | raw file
  1
  2//import de.micromata.opengis.kml.v_2_2_0.Kml;
  3import java.io.BufferedReader;
  4import java.io.BufferedWriter;
  5import java.io.File;
  6import java.io.FileInputStream;
  7import java.io.FileWriter;
  8import java.io.IOException;
  9import java.io.Reader;
 10import java.util.ArrayList;
 11import java.util.List;
 12import java.util.Random;
 13import java.util.logging.Level;
 14import java.util.logging.Logger;
 15import javax.xml.transform.Source;
 16import javax.xml.transform.stream.StreamSource;
 17import javax.xml.validation.Schema;
 18import javax.xml.validation.SchemaFactory;
 19import javax.xml.validation.Validator;
 20import org.xml.sax.SAXException;
 21
 22/*
 23 * To change this template, choose Tools | Templates
 24 * and open the template in the editor.
 25 */
 26
 27/**
 28 *
 29 * @author Fran
 30 */
 31public class Validador {
 32
 33  // List<ElemGeograf> listaElementos;
 34    int maxPtosLinea = 40;
 35    int poblacion = 200;
 36         public  void validar (String fileNames) throws SAXException, IOException
 37         {
 38
 39         //System.out.println("1");
 40        // 1. Lookup a factory for the W3C XML Schema language
 41        SchemaFactory factory =
 42            SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
 43        //System.out.println("2");
 44        // 2. Compile the schema.
 45        // Here the schema is loaded from a java.io.File, but you could use
 46        // a java.net.URL or a javax.xml.transform.Source instead.
 47        File schemaLocation = new File("C:\\Users\\Fran\\Desktop\\ogckml22.xsd");
 48      //  System.out.println("Que pasa");
 49        Schema schema = factory.newSchema(schemaLocation);
 50      //  System.out.println(" 3");
 51        // 3. Get a validator from the schema.
 52        Validator validator = schema.newValidator();
 53       // System.out.println("4 ");
 54        // 4. Parse the document you want to check.
 55        System.out.println(fileNames);
 56        FileInputStream f = new FileInputStream(new File("C:\\Users\\Fran\\Desktop\\Validaciones\\"+fileNames+".kml"));
 57        Source source = new StreamSource(f);
 58   //     System.out.println("5 ");
 59        // 5. Check the document
 60        try {
 61     //       System.out.println("6 ");
 62            validator.validate(source);
 63       //     System.out.println("7");
 64            System.out.println(" is valid.");
 65        }
 66        catch (Exception ex) {
 67            System.out.println(" is not valid because ");
 68         //   System.out.println(" 8");
 69            System.out.println(ex.getMessage());
 70        }
 71     }
 72         public void EmpezarTest()
 73         {
 74             
 75             List<ElemGeograf> lista;
 76             for(int i=0 ; i < poblacion ; i= i +1)
 77             {
 78                 //Se generan los numeros randomicos de poligonos, ptos y lineas
 79                 //Se hacen esos elem geograf y vuelven en una array
 80                 System.out.println("Test "+i);
 81                 lista = startFill();
 82                 //se pasa esa lista de elem geograf a archivo
 83                 this.TgenerarArchivo(i, lista);
 84             }
 85
 86             for(int j = 0 ; j < poblacion ; j = j + 1)
 87             {
 88                 String fileNames = "Test"+j;
 89            try {
 90                this.validar(fileNames);
 91            } catch (Exception ex) {
 92                System.out.println("Exception es aca: " + ex.getMessage());
 93               //ex.printStackTrace();
 94            }
 95             }
 96
 97        }
 98         private List<ElemGeograf> startFill()
 99         {
100             Random r = new Random();
101             int max=300;
102             int cantPoligonos;
103             int cantPtos;
104             int cantLineas;
105             cantPoligonos = r.nextInt(max);
106             cantPtos = r.nextInt(max);
107             cantLineas = r.nextInt(max);
108
109             return this.FillElemGeograf(cantPoligonos, cantLineas, cantPtos);
110         }
111         private List<ElemGeograf> FillElemGeograf(int cantPoligonos, int cantLineas, int cantPtos)
112         {
113             System.out.println("Pol "+cantPoligonos + " lines " +cantLineas + " Ptos "+ cantPtos);
114             List<ElemGeograf> listaElementos = new ArrayList<ElemGeograf>();
115             for(int topePol = 0 ; topePol < cantPoligonos ; topePol = topePol + 1)
116             {
117                 Poligono pol= this.hacerPoligono();
118                 listaElementos.add(pol);
119
120             }
121             for(int topePto = 0 ; topePto < cantLineas ; topePto = topePto + 1)
122             {
123                 Punto pto = this.hacerPunto();
124                 listaElementos.add(pto);
125
126             }for(int topeLin = 0 ; topeLin < cantPtos ; topeLin = topeLin + 1)
127             {
128                 Linea line = this.hacerLinea();
129                 listaElementos.add(line);
130             }
131             return listaElementos;
132         }
133
134         private Punto hacerPunto()
135         {
136             Coordenadas c1 = hacerCoordenadas();
137             Punto po1 = new Punto(c1);
138             return po1;
139
140         }
141         private Linea hacerLinea()
142         {
143             Random r = new Random();
144             int cantidadDePuntos = r.nextInt(maxPtosLinea);
145             while(cantidadDePuntos < 2)
146             {
147                 cantidadDePuntos = r.nextInt(maxPtosLinea);
148             }
149             ArrayList<Coordenadas> ptos = new ArrayList<Coordenadas>();
150             for(int cPto = 0 ; cPto < cantidadDePuntos; cPto = cPto + 1)
151             {
152                 Coordenadas c = hacerCoordenadas();
153                 ptos.add(c);
154             }
155
156             Linea line = new Linea(ptos);
157             return line;
158
159
160         }
161         private Poligono hacerPoligono()
162         {
163              Random r = new Random();
164             int cantidadDePuntos = r.nextInt(maxPtosLinea);
165             while(cantidadDePuntos < 4)
166             {
167                 cantidadDePuntos = r.nextInt(maxPtosLinea);
168             }
169             ArrayList<Coordenadas> ptos = new ArrayList<Coordenadas>();
170             for(int cPto = 0 ; cPto < cantidadDePuntos; cPto = cPto + 1)
171             {
172                 Coordenadas c = hacerCoordenadas();
173                 ptos.add(c);
174             }
175
176             Poligono pol = new Poligono(ptos);
177             return pol;
178         }
179
180         private Coordenadas hacerCoordenadas()
181         {
182             Random r = new Random();
183             double lat = r.nextDouble()*100;
184             double lon = r.nextDouble()*100;
185             while(lat<30 || lat>60)
186             {
187                 lat = r.nextDouble()*100;
188             }
189             while(lon<30 || lon>60)
190             {
191                 lon = r.nextDouble()*100;
192             }
193             if(r.nextBoolean())
194             {
195               lat = lat * -1;
196             }
197             if(r.nextBoolean())
198             {
199                 lon = lon * -1;
200             }
201             //System.out.println(lat + " " + lon);
202             Coordenadas c= new Coordenadas(lat, lon);
203             return c;
204         }
205         private void TLlenarArray()
206         {
207        Coordenadas c1 = new Coordenadas(-36.123,-56.312);
208        Coordenadas c10 = new Coordenadas(-32.5675123,-57.8888432);
209        Coordenadas c11 = new Coordenadas(-33.765123,-57.4999932);
210        Coordenadas c12 = new Coordenadas(-31.14623,-57.47772);
211
212        ArrayList<Coordenadas> array1 = new ArrayList<Coordenadas>();
213        array1.add(c1);
214        array1.add(c10);
215        array1.add(c11);
216        array1.add(c12);
217
218        Linea l1 = new Linea(array1);
219
220        Coordenadas c2 = new Coordenadas(-36.123,-56.312);
221        Coordenadas c20 = new Coordenadas(-34.123,-57.232);
222        Coordenadas c21 = new Coordenadas(-33.123,-58.432);
223        Coordenadas c22 = new Coordenadas(-36.123,-56.312);
224
225        ArrayList<Coordenadas> array2 = new ArrayList<Coordenadas>();
226        array2.add(c2);
227        array2.add(c20);
228        array2.add(c21);
229        array2.add(c22);
230
231        Coordenadas c3 = new Coordenadas(-37.123, -56.312);
232        Punto po1 = new Punto(c3);
233
234        Poligono p1 = new Poligono (array2);
235
236
237       // this.listaElementos = new ArrayList<ElemGeograf>();
238        //this.listaElementos.add(l1);
239       // this.listaElementos.add(p1);
240       // this.listaElementos.add(po1);
241
242    }
243
244         private void TgenerarArchivo (int numeroDelArchivo, List<ElemGeograf> listaElementos)
245         {
246        //C:\Program Files\SlikSvn\bin
247        String fileName = "C:\\Users\\Fran\\Desktop\\Validaciones\\Test"+numeroDelArchivo+".kml";
248        //String fileName = "C:\\Users\\Fran\\prototipomemoria\\Prototipo\\Servlet\\ArchCuatro.kml";
249        //String NombreArchivo = "ArchivoKML.kml";
250        FileWriter fw;
251        BufferedWriter bw;
252        String archivo = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n <kml xmlns=\"http://www.opengis.net/kml/2.2\"> \n <Document>\n";
253        for(ElemGeograf e:listaElementos)
254        {
255            archivo = archivo + e.ToKml(0);
256        }
257        archivo = archivo + "</Document> \n </kml>";
258        try{
259            fw = new FileWriter(fileName);
260            bw = new BufferedWriter(fw);
261            bw.write(archivo);
262            bw.close();
263            fw.close();
264
265        }catch(IOException e)
266        {
267            e.printStackTrace();
268        }
269        //System.out.println("llamo aca a lo que quiero llamar");
270
271
272
273
274    }
275
276}