/**
 * Copyright (c) Codice Foundation
 *
 * <p>This is free software: you can redistribute it and/or modify it under the terms of the GNU
 * Lesser General Public License as published by the Free Software Foundation, either version 3 of
 * the License, or any later version.
 *
 * <p>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Lesser General Public License for more details. A copy of the GNU Lesser General Public
 * License is distributed along with this program and can be found at
 * <http://www.gnu.org/licenses/lgpl.html>.
 */
package ddf.catalog.data.impl;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Serializer<T> {

  public void serialize(T object, String fileLocation) throws FileNotFoundException, IOException {
    FileOutputStream fos = new FileOutputStream(new File(fileLocation));

    ObjectOutputStream out = new ObjectOutputStream(fos);

    out.writeObject(object);

    out.close();
  }

  public T deserialize(String fileLocation)
      throws FileNotFoundException, IOException, ClassNotFoundException {
    FileInputStream fis = new FileInputStream(new File(fileLocation));

    ObjectInputStream in = new ObjectInputStream(fis);

    @SuppressWarnings("unchecked")
    T readObject = (T) in.readObject();

    in.close();
    return readObject;
  }
}
