/*==========================================================================*\
| $Id: PreviewQueryManager.java,v 1.1 2010/05/11 15:52:46 aallowat Exp $
|*-------------------------------------------------------------------------*|
| Copyright (C) 2006-2008 Virginia Tech
|
| This file is part of Web-CAT.
|
| Web-CAT is free software; you can redistribute it and/or modify
| it under the terms of the GNU Affero General Public License as published
| by the Free Software Foundation; either version 3 of the License, or
| (at your option) any later version.
|
| Web-CAT 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 Affero General Public License
| along with Web-CAT; if not, see <http://www.gnu.org/licenses/>.
\*==========================================================================*/
package org.webcat.oda.designer.preview;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Map;
import org.eclipse.core.runtime.IPath;
import org.webcat.oda.designer.DesignerActivator;
//------------------------------------------------------------------------
/**
* TODO: real description
*
* @author Tony Allevato (Virginia Tech Computer Science)
* @version $Id: PreviewQueryManager.java,v 1.1 2010/05/11 15:52:46 aallowat Exp $
*/
public class PreviewQueryManager
{
public PreviewQueryManager()
{
dataSetQueries = new Hashtable<String, PreviewQueryClause[]>();
loadFromState();
}
private File getDbFile()
{
IPath statePath = DesignerActivator.getDefault().getStateLocation();
return statePath.append(PREVIEW_QUERY_FILE).toFile();
}
private void loadFromState()
{
File dbFile = getDbFile();
if (!dbFile.exists())
return;
try
{
BufferedReader reader = new BufferedReader(new FileReader(dbFile));
String line;
while ((line = reader.readLine()) != null)
{
String uuid = line;
ArrayList<PreviewQueryClause> clauses = new ArrayList<PreviewQueryClause>();
while (!(line = reader.readLine()).equals(END_OF_QUERY_MARKER))
{
clauses.add(PreviewQueryClause.read(reader));
}
PreviewQueryClause[] clauseArray = new PreviewQueryClause[clauses
.size()];
clauses.toArray(clauseArray);
dataSetQueries.put(uuid, clauseArray);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void saveToState()
{
File dbFile = getDbFile();
try
{
BufferedWriter writer = new BufferedWriter(new FileWriter(dbFile));
for (String uuid : dataSetQueries.keySet())
{
writer.write(uuid);
writer.newLine();
writer.newLine();
writeQuery(uuid, writer);
writer.write(END_OF_QUERY_MARKER);
writer.newLine();
}
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void writeQuery(String uuid, BufferedWriter writer)
throws IOException
{
PreviewQueryClause[] clauses = dataSetQueries.get(uuid);
if (clauses == null)
return;
for (int i = 0; i < clauses.length; i++)
{
clauses[i].write(writer);
if (i != clauses.length - 1)
writer.newLine();
}
}
public void addQuery(String uuid, PreviewQueryClause[] clauses)
{
dataSetQueries.put(uuid, clauses);
}
public PreviewQueryClause[] getQuery(String uuid)
{
return dataSetQueries.get(uuid);
}
private static final String PREVIEW_QUERY_FILE = "previewQueries.txt"; //$NON-NLS-1$
private static final String END_OF_QUERY_MARKER = "%%%% END OF QUERY %%%%"; //$NON-NLS-1$
private Map<String, PreviewQueryClause[]> dataSetQueries;
}