/**
* Copyright (C) 2011 Adriano Monteiro Marques
*
* Author: Zubair Nabi <zn.zubairnabi@gmail.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
* USA
*/
package org.umit.icm.mobile.utils;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.List;
import org.umit.icm.mobile.connectivity.Service;
import org.umit.icm.mobile.connectivity.Website;
import org.umit.icm.mobile.process.Constants;
import org.umit.icm.mobile.proto.MessageProtos.AgentData;
import org.umit.icm.mobile.proto.MessageProtos.Event;
import org.umit.icm.mobile.proto.MessageProtos.GetEventsResponse;
import org.umit.icm.mobile.proto.MessageProtos.GetPeerListResponse;
import org.umit.icm.mobile.proto.MessageProtos.GetSuperPeerListResponse;
import org.umit.icm.mobile.proto.MessageProtos.NewTestsResponse;
import org.umit.icm.mobile.proto.MessageProtos.ResponseHeader;
import org.umit.icm.mobile.proto.MessageProtos.ServiceReport;
import org.umit.icm.mobile.proto.MessageProtos.Test;
import org.umit.icm.mobile.proto.MessageProtos.WebsiteReport;
import twitter4j.auth.AccessToken;
import android.os.Environment;
/**
* Provides methods for reading and writing different objects to the SDCard
* storage.
*/
public class SDCardReadWrite {
private static File sdCard;
/**
* Writes a {@link String} to the specified filename in directory.
*
*
@param fileName An object of the type {@link String}
*
@param data An object of the type {@link String}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeString(String fileName
, String dir, String data) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir, fileName);
if(!file.exists()){
file.createNewFile();
}
FileWriter fileWriter = new FileWriter(file, false);
try {
fileWriter.write(data);
} catch (Exception e) {
throw new RuntimeException("SDCardWrite exception", e);
} finally {
fileWriter.close();
}
}
/**
* Appends a {@link String} to the specified filename in directory.
*
*
@param fileName An object of the type {@link String}
*
@param data An object of the type {@link String}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeStringAppend(String fileName
, String dir, String data) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir, fileName);
if(!file.exists()){
file.createNewFile();
}
FileWriter fileWriter = new FileWriter(file, true);
try {
fileWriter.write(data);
} catch (Exception e) {
throw new RuntimeException("SDCardWrite exception", e);
} finally {
fileWriter.close();
}
}
/**
* Returns a {@link String} object of the file content from the specified
* filename in directory.
*
*
@param fileName An object of the type {@link String}
*
@return {@link String}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static String readString(String fileName
, String dir) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir, fileName);
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
try {
return bufferedReader.readLine();
} catch (Exception e) {
throw new RuntimeException("SDCardRead exception", e);
} finally {
fileReader.close();
}
}
/**
* Checks if a certain file in a specified directory exists or not.
*
*
@param fileName An object of the type {@link String}
*
@param dir An object of the type {@link String}
*
@return boolean
@see File
*
@see FileWriter
*
@see Environment
*/
public static boolean fileExists(String fileName
, String dir) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir, fileName);
if(file.exists()){
return true;
}
return false;
}
/**
* Checks if a certain file in a specified directory is empty or not.
*
*
@param fileName An object of the type {@link String}
*
@param dir An object of the type {@link String}
*
@return boolean
@see File
*
@see FileWriter
*
@see Environment
*/
public static boolean fileNotEmpty(String fileName
, String dir) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir, fileName);
if(!file.exists()){
return false;
}
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
if(bufferedReader.readLine() == null){
return false;
}
return true;
}
/**
* Writes a {@link Website} to the default filename in directory.
*
*
@param data An object of the type {@link Website}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeWebsite(String dir, Website data) throws IOException , RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath() + dir);
keyDir.mkdirs();
File file = new File(keyDir, data.getUrl()+ Constants.WEBSITE_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
objOutStream.writeObject(data.getUrl());
objOutStream.writeObject(data.getCheck());
objOutStream.writeObject(data.getStatus());
objOutStream.writeObject(data.getTestID());
objOutStream.writeObject(Long.toString(data.getExecuteAtTimeUTC()));
} catch (Exception e) {
throw new RuntimeException("writeWebsite exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link Website} object of the file content from the specified
* filename in directory.
*
*
@return {@link String}
*
@param dir An object of the type {@link String}
*
@param url An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static Website readWebsite(String dir
, String url) throws IOException , RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir, url
+ Constants.WEBSITE_FILE);
Website website = new Website();
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
website.setUrl((String) objInputStream.readObject());
website.setCheck((String) objInputStream.readObject());
website.setStatus((String) objInputStream.readObject());
website.setTestID((String)objInputStream.readObject());
website.setExecuteAtTimeUTC(Long.parseLong((String)objInputStream.readObject()));
return website;
} catch (Exception e) {
throw new RuntimeException("readWebsite exception", e);
} finally {
objInputStream.close();
}
}
/**
* Checks if the SDCard is present or not.
*
*
@return boolean
*
@see Environment
*/
public static boolean checkSDCard() {
String storageState = android.os.Environment.getExternalStorageState();
String mediaMounted = android.os.Environment.MEDIA_MOUNTED;
if(storageState.equals(mediaMounted))
return true;
return false;
}
/**
* Writes a {@link WebsiteReport} to the default filename in directory.
*
*
@param data An object of the type {@link WebsiteReport}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see FileOutputStream
*/
public static void writeWebsiteReport(String dir
, WebsiteReport data) throws IOException, RuntimeException{
OutputStream outputStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, data.getReport().getWebsiteURL().substring(11).replaceAll("/", "-")
+ Constants.WEBSITE_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
outputStream = new FileOutputStream(file);
data.writeTo(outputStream);
} catch (Exception e) {
throw new RuntimeException("write website exception", e);
} finally {
outputStream.close();
}
}
/**
* Returns a {@link WebsiteReport} object of the file content from the specified
* filename in directory.
*
*
@return {@link WebsiteReport}
*
@param dir An object of the type {@link String}
*
@param url An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static WebsiteReport readWebsiteReport(String dir
, String url) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, url.substring(11).replaceAll("/", "-")
+ Constants.WEBSITE_FILE);
InputStream inputStream = new FileInputStream(file.toString());
try {
WebsiteReport websiteReport
= WebsiteReport.parseFrom(inputStream);
return websiteReport;
} catch (Exception e) {
throw new RuntimeException("read website exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link List} of {@link Website} to the default filename in directory.
*
*
@param data An object of the type {@link List} of {@link Website}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeWebsitesList(String dir
, List<Website> data) throws IOException, RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, Constants.WEBSITES_LIST_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
objOutStream.writeObject(data);
} catch (Exception e) {
throw new RuntimeException("write websites list exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link List} of {@link Website} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link Website}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
@SuppressWarnings("unchecked")
public static List<Website> readWebsitesList(String dir
) throws IOException, RuntimeException{
List<Website> websites = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, Constants.WEBSITES_LIST_FILE);
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
websites = ((List<Website>) objInputStream.readObject());
return websites;
} catch (Exception e) {
throw new RuntimeException("read website exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link Service} object to the default
* filename in directory.
*
*
@param dir An object of the type {@link String}
*
@param data An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeService(String dir
, Service data) throws IOException , RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir, data.getName()
+ Constants.SERVICE_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
objOutStream.writeObject(data.getCheck());
objOutStream.writeObject(data.getName());
objOutStream.writeObject(data.getIp());
objOutStream.writeObject(data.getPort());
objOutStream.writeObject(data.getStatus());
objOutStream.writeObject(data.getTestID());
objOutStream.writeObject(Long.toString(data.getExecuteAtTimeUTC()));
} catch (Exception e) {
throw new RuntimeException("writeService exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link Service} object of the file content from the specified
* filename in directory.
*
*
@return {@link Service}
*
@param dir An object of the type {@link String}
*
@param name An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static Service readService(String dir
, String name) throws IOException , RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir, name
+ Constants.SERVICE_FILE);
Service service = new Service();
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
service.setCheck((String) objInputStream.readObject());
service.setName((String) objInputStream.readObject());
service.setIp((String) objInputStream.readObject());
service.setPort((Integer) objInputStream.readObject());
service.setStatus((String) objInputStream.readObject());
service.setTestID((String)objInputStream.readObject());
service.setExecuteAtTimeUTC(Long.parseLong((String)objInputStream.readObject()));
return service;
} catch (Exception e) {
throw new RuntimeException("readService exception", e);
} finally {
objInputStream.close();
}
}
/**
* Writes a {@link List} of {@link Service} to the default filename in directory.
*
*
@param data An object of the type {@link List} of {@link Service}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeServicesList(String dir
, List<Service> data) throws IOException, RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, Constants.SERVICES_LIST_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
objOutStream.writeObject(data);
} catch (Exception e) {
throw new RuntimeException("write services list exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link List} of {@link Service} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link Service}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
@SuppressWarnings("unchecked")
public static List<Service> readServicesList(String dir
) throws IOException, RuntimeException{
List<Service> services = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, Constants.SERVICES_LIST_FILE);
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
services = ((List<Service>) objInputStream.readObject());
return services;
} catch (Exception e) {
throw new RuntimeException("read services list exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link List} of {@link AgentData} to the default filename in directory.
*
*
@param data An object of the type {@link List} of {@link AgentData}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writePeersList(String dir
, List<AgentData> data) throws IOException, RuntimeException{
OutputStream outputStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, Constants.PEERS_FILE);
if(!file.exists()){
file.createNewFile();
}
ResponseHeader responseHeader = ResponseHeader.newBuilder()
.setCurrentTestVersionNo(21)
.setCurrentVersionNo(21)
.build();
GetPeerListResponse getPeerListResponse
= GetPeerListResponse.newBuilder()
.setHeader(responseHeader)
.addAllKnownPeers(data)
.build();
try {
outputStream = new FileOutputStream(file);
getPeerListResponse.writeTo(outputStream);
} catch (Exception e) {
throw new RuntimeException("write peers list exception", e);
} finally {
outputStream.close();
}
}
/**
* Returns a {@link List} of {@link AgentData} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link AgentData}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static List<AgentData> readPeersList(String dir
) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, Constants.PEERS_FILE);
InputStream inputStream = new FileInputStream(file.toString());
try {
GetPeerListResponse getPeerListResponse
= GetPeerListResponse.parseFrom(inputStream);
return getPeerListResponse.getKnownPeersList();
} catch (Exception e) {
throw new RuntimeException("read peers list exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link List} of {@link AgentData} to the default filename in directory.
*
*
@param data An object of the type {@link List} of {@link AgentData}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeSuperPeersList(String dir
, List<AgentData> data) throws IOException, RuntimeException{
OutputStream outputStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, Constants.SUPER_PEERS_FILE);
if(!file.exists()){
file.createNewFile();
}
ResponseHeader responseHeader = ResponseHeader.newBuilder()
.setCurrentTestVersionNo(21)
.setCurrentVersionNo(21)
.build();
GetSuperPeerListResponse getSuperPeerListResponse
= GetSuperPeerListResponse.newBuilder()
.setHeader(responseHeader)
.addAllKnownSuperPeers(data)
.build();
try {
outputStream = new FileOutputStream(file);
getSuperPeerListResponse.writeTo(outputStream);
} catch (Exception e) {
throw new RuntimeException("write super peers list exception", e);
} finally {
outputStream.close();
}
}
/**
* Returns a {@link List} of {@link AgentData} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link AgentData}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static List<AgentData> readSuperPeersList(String dir
) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, Constants.SUPER_PEERS_FILE);
InputStream inputStream = new FileInputStream(file.toString());
try {
GetSuperPeerListResponse getSuperPeerListResponse
= GetSuperPeerListResponse.parseFrom(inputStream);
return getSuperPeerListResponse.getKnownSuperPeersList();
} catch (Exception e) {
throw new RuntimeException("read super peers list exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link List} of {@link Event} to the default filename in directory.
*
*
@param data An object of the type {@link List} of {@link Event}
*
@param dir An object of the type {@link String}
*
@see File
*
@see ObjectOutputStream
*
@see Environment
*/
public static void writeEventsList(String dir
, List<Event> data) throws IOException, RuntimeException{
OutputStream outputStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, Constants.EVENTS_FILE);
if(!file.exists()){
file.createNewFile();
}
ResponseHeader responseHeader = ResponseHeader.newBuilder()
.setCurrentTestVersionNo(21)
.setCurrentVersionNo(21)
.build();
GetEventsResponse getEventsResponse
= GetEventsResponse.newBuilder()
.addAllEvents(data)
.setHeader(responseHeader)
.build();
try {
outputStream = new FileOutputStream(file);
getEventsResponse.writeTo(outputStream);
} catch (Exception e) {
throw new RuntimeException("write events list exception", e);
} finally {
outputStream.close();
}
}
/**
* Returns a {@link List} of {@link Event} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link Event}
*
@param dir An object of the type {@link String}
*
@see File
*
@see ObjectInputStream
*
@see Environment
*/
public static List<Event> readEventsList(String dir
) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, Constants.EVENTS_FILE);
InputStream inputStream = new FileInputStream(file.toString());
try {
GetEventsResponse getEventsResponse
= GetEventsResponse.parseFrom(inputStream);
return getEventsResponse.getEventsList();
} catch (Exception e) {
throw new RuntimeException("read events list exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link List} of {@link Test} to the default filename in directory.
*
*
@param data An object of the type {@link List} of {@link Test}
*
@param dir An object of the type {@link String}
*
@see File
*
@see ObjectOutputStream
*
@see Environment
*/
public static void writeTestsList(String dir
, List<Test> data) throws IOException, RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, Constants.TESTS_FILE);
if(!file.exists()){
file.createNewFile();
}
ResponseHeader responseHeader = ResponseHeader.newBuilder()
.setCurrentTestVersionNo(21)
.setCurrentVersionNo(21)
.build();
NewTestsResponse newTestsResponse = NewTestsResponse.newBuilder()
.addAllTests(data)
.setTestVersionNo(10)
.setHeader(responseHeader)
.build();
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
newTestsResponse.writeTo(objOutStream);
} catch (Exception e) {
throw new RuntimeException("write tests list exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link List} of {@link Test} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link Test}
*
@param dir An object of the type {@link String}
*
@see File
*
@see ObjectInputStream
*
@see Environment
*/
public static List<Test> readTestsList(String dir
) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, Constants.TESTS_FILE);
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
NewTestsResponse newTestsResponse
= NewTestsResponse.parseFrom(objInputStream);
return newTestsResponse.getTestsList();
} catch (Exception e) {
throw new RuntimeException("read tests list exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link WebsiteReport} to the default filename in directory.
*
*
@param data An object of the type {@link WebsiteReport}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileWriter
*
@see FileOutputStream
*/
public static void writeServiceReport(String dir
, ServiceReport data) throws IOException, RuntimeException{
OutputStream outputStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, data.getReport().getServiceName()
+ Constants.SERVICE_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
outputStream = new FileOutputStream(file);
data.writeTo(outputStream);
} catch (Exception e) {
throw new RuntimeException("write service report exception", e);
} finally {
outputStream.close();
}
}
/**
* Returns a {@link WebsiteReport} object of the file content from the specified
* filename in directory.
*
*
@return {@link WebsiteReport}
*
@param dir An object of the type {@link String}
*
@param url An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static ServiceReport readServiceReport(String dir
, String url) throws IOException, RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, url
+ Constants.SERVICE_FILE);
InputStream inputStream = new FileInputStream(file.toString());
try {
ServiceReport serviceReport
= ServiceReport.parseFrom(inputStream);
return serviceReport;
} catch (Exception e) {
throw new RuntimeException("read service report exception", e);
} finally {
inputStream.close();
}
}
/**
* Writes a {@link AccessToken} object to the default
* filename in directory.
*
*
@param dir An object of the type {@link String}
*
@param data An object of the type {@link AccessToken}
*
@see File
*
@see FileWriter
*
@see Environment
*/
public static void writeAccessToken(String dir
, AccessToken data) throws IOException , RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir,
Constants.ACCESS_TOKEN_FILE);
if(!file.exists()){
file.createNewFile();
}
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
objOutStream.writeObject(data.getToken());
objOutStream.writeObject(data.getTokenSecret());
} catch (Exception e) {
throw new RuntimeException("writeAccessToken exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link AccessToken} object of the file content from the specified
* filename in directory.
*
*
@return {@link AccessToken}
*
@param dir An object of the type {@link String}
*
@see File
*
@see FileReader
*
@see Environment
*/
public static AccessToken readAccessToken(String dir) throws IOException , RuntimeException{
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir,
Constants.ACCESS_TOKEN_FILE);
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
String token = ((String) objInputStream.readObject());
String tokenSecret = ((String) objInputStream.readObject());
return new AccessToken(token, tokenSecret);
} catch (Exception e) {
throw new RuntimeException("readToken exception", e);
} finally {
objInputStream.close();
}
}
/**
* Writes a {@link List} of {@link String} to the given filename in directory.
*
*
@param data An object of the type {@link List} of {@link String}
*
@param dir An object of the type {@link String}
*
@see File
*
@see ObjectOutputStream
*
@see Environment
*/
public static void writeStringList(String dir, String filename
, List<String> data) throws IOException, RuntimeException{
ObjectOutputStream objOutStream = null;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
keyDir.mkdirs();
File file = new File(keyDir
, filename);
if(!file.exists()){
file.createNewFile();
}
try {
objOutStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(file)));
objOutStream.writeObject(data);
} catch (Exception e) {
throw new RuntimeException("write string list exception", e);
} finally {
objOutStream.close();
}
}
/**
* Returns a {@link List} of {@link String} object from the specified
* filename in directory.
*
*
@return {@link List} of {@link String}
*
@param dir An object of the type {@link String}
*
@see File
*
@see ObjectInputStream
*
@see Environment
*/
@SuppressWarnings("unchecked")
public static List<String> readStringList(String dir, String filename
) throws IOException, RuntimeException{
List<String> list;
sdCard = Environment.getExternalStorageDirectory();
File keyDir = new File (sdCard.getAbsolutePath()
+ dir);
File file = new File(keyDir
, filename);
InputStream inputStream = new FileInputStream(file.toString());
ObjectInputStream objInputStream =
new ObjectInputStream(new BufferedInputStream(inputStream));
try {
list = ((List<String>) objInputStream.readObject());
return list;
} catch (Exception e) {
throw new RuntimeException("read String list exception", e);
} finally {
inputStream.close();
}
}
}