/*
* Copyright (c) 2016 Vivid Solutions.
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* and Eclipse Distribution License v. 1.0 which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
*
* http://www.eclipse.org/org/documents/edl-v10.php.
*/
package test.jts.geom;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.locationtech.jts.geom.Envelope;
import org.locationtech.jts.geom.Geometry;
import org.locationtech.jts.geom.GeometryFactory;
/**
* @version 1.7
*/
public class TestSerializable {
public static final String FILENAME = "c:\\testSerial.txt";
public static final GeometryFactory fact = new GeometryFactory();
public TestSerializable() {
}
public static void main(String[] args) {
TestSerializable test = new TestSerializable();
test.run();
}
public void run()
{
List objList = createData();
writeData(objList);
readData(objList);
}
List createData()
{
List objList = new ArrayList();
Envelope env = new Envelope(123, 456, 123, 456);
objList.add(env);
objList.add(GeometryTestFactory.createBox(fact, 0.0, 100.0, 10, 10.0));
return objList;
}
void writeData(List objList)
{
File file; // simply a file name
FileOutputStream outStream; // generic stream to the file
ObjectOutputStream objStream; // stream for objects to the file
file = new File(FILENAME);
try {
// setup a stream to a physical file on the filesystem
outStream = new FileOutputStream(file);
// attach a stream capable of writing objects to the stream that is
// connected to the file
objStream = new ObjectOutputStream(outStream);
objStream.writeObject(objList);
// for (Iterator i = objList.iterator(); i.hasNext(); )
// {
// objStream.writeObject(i.next());
// }
objStream.close();
} catch(IOException e) {
System.err.println("Things not going as planned.");
e.printStackTrace();
} // catch
}
void readData(List objList)
{
File file; // simply a file name
FileInputStream stream; // generic stream to the file
ObjectInputStream objStream; // stream for objects to the file
file = new File(FILENAME);
try {
// setup a stream to a physical file on the filesystem
stream = new FileInputStream(file);
// attach a stream capable of writing objects to the stream that is
// connected to the file
objStream = new ObjectInputStream(stream);
int count = 0;
Object obj = objStream.readObject();
List inputList = (List) obj;
for (Iterator i = inputList.iterator(); i.hasNext(); ) {
compare(objList.get(count++), i.next());
}
// while (objStream.available() > 0) {
// Object obj = objStream.readObject();
// compare(objList.get(count++), obj);
// }
objStream.close();
} catch(Exception e) {
System.err.println("Things not going as planned.");
e.printStackTrace();
} // catch
}
boolean compare(Object o1, Object o2)
{
boolean matched = false;
if (o1 instanceof Envelope) {
if (! ((Envelope) o1).equals(o2) ) {
System.out.println("expected " + o1 + ", found " + o2);
}
else
matched = true;
}
else if (o1 instanceof Geometry) {
if (! ((Geometry) o1).equalsExact((Geometry) o2) ) {
System.out.println("expected " + o1 + ", found " + o2);
}
else
matched = true;
}
if (matched)
System.out.println("found match for object");
return true;
}
}