/*
* This file is part of NixNote
* Copyright 2009 Randy Baumgarte
*
* This file may be licensed under the terms of of the
* GNU General Public License Version 2 (the ``GPL'').
*
* Software distributed under the License is distributed
* on an ``AS IS'' basis, WITHOUT WARRANTY OF ANY KIND, either
* express or implied. See the GPL for the specific language
* governing rights and limitations.
*
* You should have received a copy of the GPL along with this
* program. If not, go to http://www.gnu.org/licenses/gpl.html
* or write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
package cx.fbn.nevernote.sql;
import java.util.ArrayList;
import java.util.List;
import cx.fbn.nevernote.sql.driver.NSqlQuery;
import cx.fbn.nevernote.utilities.ApplicationLogger;
import cx.fbn.nevernote.utilities.ListManager;
public class InvalidXMLTable {
ListManager parent;
private final ApplicationLogger logger;
private final DatabaseConnection db;
// Constructor
public InvalidXMLTable(ApplicationLogger l, DatabaseConnection d) {
logger = l;
db = d;
}
// Create the table
public void createTable() {
NSqlQuery query = new NSqlQuery(db.getConnection());
// query.exec("drop table InvalidXML");
logger.log(logger.HIGH, "Creating table InvalidXML...");
if (!query.exec("Create table InvalidXML (type varchar, element varchar, attribute varchar,primary key(type, element,attribute) );"))
logger.log(logger.HIGH, "Table InvalidXML creation FAILED!!!");
// query.clear();
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'button', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'embed', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'fieldset', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'form', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'input', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'label', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'legend', '');");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'o:p', '')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'option', '')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'script', '')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'select', '')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ELEMENT', 'wbr', '')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'a', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'a', 'done')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'a', 'id')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'a', 'onclick')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'a', 'onmousedown')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'div', 'id')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'dl', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'dl', 'id')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'dt', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'h1', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'h2', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'h3', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'h4', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'h5', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'img', 'gptag')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'li', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'ol', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'ol', 'id')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'p', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'p', 'id')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'p', 'span')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'accesskey')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'action')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'alt')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'bgcolor')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'checked')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'flashvars')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'for')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'height')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'id')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'maxlength')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'method')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'name')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'onblur')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'onchange')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'aclick')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'onsubmit')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'quality')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'selected')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'src')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'target')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'type')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'value')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'width')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'span', 'wmode')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'table', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'td', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'tr', 'class')");
query.exec("Insert into InvalidXML (type, element, attribute) values ('ATTRIBUTE', 'ul', 'class')");
}
// Drop the table
public void dropTable() {
NSqlQuery query = new NSqlQuery(db.getConnection());
query.exec("Drop table InvalidXML");
}
// Add an item to the table
public void addAttribute(String element, String attribute) {
if (attributeExists(element,attribute))
return;
NSqlQuery query = new NSqlQuery(db.getConnection());
query.prepare("Insert Into InvalidXML (type, element, attribute) Values('ATTRIBUTE', :element, :attribute)");
query.bindValue(":element", element);
query.bindValue(":attribute", attribute);
if (!query.exec()) {
logger.log(logger.MEDIUM, "Insert Attribute into invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
}
}
// Add an item to the table
public void addElement(String element) {
if (elementExists(element))
return;
NSqlQuery query = new NSqlQuery(db.getConnection());
query.prepare("Insert Into InvalidXML (type, element) Values('ELEMENT', :element)");
query.bindValue(":element", element);
if (!query.exec()) {
logger.log(logger.MEDIUM, "Insert Element into invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
}
}
// get invalid elements
public List<String> getInvalidElements() {
NSqlQuery query = new NSqlQuery(db.getConnection());
if (!query.exec("Select element from InvalidXML where type = 'ELEMENT'")) {
logger.log(logger.MEDIUM, "getInvalidElement from invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
return null;
}
List<String> elements = new ArrayList<String>();
while (query.next()) {
elements.add(query.valueString(0));
}
return elements;
}
// get invalid elements
public List<String> getInvalidAttributeElements() {
NSqlQuery query = new NSqlQuery(db.getConnection());
if (!query.exec("Select distinct element from InvalidXML where type = 'ATTRIBUTE'")) {
logger.log(logger.MEDIUM, "getInvalidElement from invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
return null;
}
List<String> elements = new ArrayList<String>();
while (query.next()) {
elements.add(query.valueString(0));
}
return elements;
}
// get invalid attributes for a given element
public ArrayList<String> getInvalidAttributes(String element) {
NSqlQuery query = new NSqlQuery(db.getConnection());
query.prepare("Select attribute from InvalidXML where type = 'ATTRIBUTE' and element = :element");
query.bindValue(":element", element);
if (!query.exec()) {
logger.log(logger.MEDIUM, "getInvalidElement from invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
return null;
}
ArrayList<String> elements = new ArrayList<String>();
while (query.next()) {
elements.add(query.valueString(0));
}
return elements;
}
// Determine if an element already is in the table
public boolean elementExists(String element) {
NSqlQuery query = new NSqlQuery(db.getConnection());
query.prepare("Select element from InvalidXML where type='ELEMENT' and element=:element");
query.bindValue(":element", element);
if (!query.exec()) {
logger.log(logger.MEDIUM, "elementExists in invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
}
if (query.next())
return true;
else
return false;
}
// Determine if an element already is in the table
public boolean attributeExists(String element, String attribute) {
NSqlQuery query = new NSqlQuery(db.getConnection());
query.prepare("Select element from InvalidXML where type='ATTRIBUTE' and element=:element and attribute=:attribute");
query.bindValue(":element", element);
query.bindValue(":attribute", attribute);
if (!query.exec()) {
logger.log(logger.MEDIUM, "attributeExists in invalidXML failed.");
logger.log(logger.MEDIUM, query.lastError());
}
if (query.next())
return true;
else
return false;
}
}