Build changes for sql extension
- eliminated packager subdir - separated sqltest app Not part of build git-svn-id: svn://10.0.0.236/trunk@144520 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -8,11 +8,12 @@ include $(DEPTH)/config/autoconf.mk
|
||||
DIRS = \
|
||||
base \
|
||||
pgsql \
|
||||
build \
|
||||
packager
|
||||
build
|
||||
|
||||
ifdef ENABLE_TESTS
|
||||
DIRS += tests
|
||||
DIRS += \
|
||||
sqltest \
|
||||
tests
|
||||
endif
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
@@ -3,7 +3,19 @@ topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
DIRS = \
|
||||
src
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
XPI_FILE = sql-$(shell date +%Y%m%d)-$(OS_ARCH).xpi
|
||||
|
||||
xpi:
|
||||
zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js
|
||||
cd $(DIST); zip -r $(XPI_FILE) \
|
||||
bin/components/sql.xpt \
|
||||
bin/components/sqlpgsql.xpt \
|
||||
bin/components/$(LIB_PREFIX)sql$(DLL_SUFFIX) \
|
||||
bin/chrome/sql.jar
|
||||
|
||||
@@ -21,22 +21,6 @@ function verifyDiskSpace(dirPath, spaceRequired)
|
||||
return(true);
|
||||
}
|
||||
|
||||
// this function deletes a file if it exists
|
||||
function deleteThisFile(dirKey, file)
|
||||
{
|
||||
var fFileToDelete;
|
||||
|
||||
fFileToDelete = getFolder(dirKey, file);
|
||||
logComment("File to delete: " + fFileToDelete);
|
||||
if(File.isFile(fFileToDelete))
|
||||
{
|
||||
File.remove(fFileToDelete);
|
||||
return(true);
|
||||
}
|
||||
else
|
||||
return(false);
|
||||
}
|
||||
|
||||
var srDest = 200;
|
||||
|
||||
var err = initInstall("SQL Support", "SQL", "0.1");
|
||||
@@ -1,18 +0,0 @@
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
XPI_FILE = sql-$(shell date +%Y%m%d)-$(OS_ARCH).xpi
|
||||
|
||||
xpi:
|
||||
zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js
|
||||
cd $(DIST); zip -r $(XPI_FILE) \
|
||||
bin/components/sql.xpt \
|
||||
bin/components/sqlpgsql.xpt \
|
||||
bin/components/$(LIB_PREFIX)sql$(DLL_SUFFIX) \
|
||||
bin/chrome/sql.jar
|
||||
15
mozilla/extensions/sql/sqltest/Makefile.in
Normal file
15
mozilla/extensions/sql/sqltest/Makefile.in
Normal file
@@ -0,0 +1,15 @@
|
||||
DEPTH = ../../..
|
||||
topsrcdir = @top_srcdir@
|
||||
srcdir = @srcdir@
|
||||
VPATH = @srcdir@
|
||||
|
||||
include $(DEPTH)/config/autoconf.mk
|
||||
|
||||
include $(topsrcdir)/config/rules.mk
|
||||
|
||||
XPI_FILE = sqltest-$(shell date +%Y%m%d).xpi
|
||||
|
||||
xpi:
|
||||
zip -j $(DIST)/$(XPI_FILE) $(srcdir)/install.js
|
||||
cd $(DIST); zip -r $(XPI_FILE) \
|
||||
bin/chrome/sqltest.jar
|
||||
17
mozilla/extensions/sql/sqltest/contents.rdf
Normal file
17
mozilla/extensions/sql/sqltest/contents.rdf
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0"?>
|
||||
<RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:chrome="http://www.mozilla.org/rdf/chrome#">
|
||||
|
||||
<!-- list all the packages being supplied by this jar -->
|
||||
<RDF:Seq about="urn:mozilla:package:root">
|
||||
<RDF:li resource="urn:mozilla:package:sqltest"/>
|
||||
</RDF:Seq>
|
||||
|
||||
<!-- package information -->
|
||||
<RDF:Description about="urn:mozilla:package:sqltest"
|
||||
chrome:displayName="SQL test"
|
||||
chrome:author="mozilla.org"
|
||||
chrome:name="sqltest">
|
||||
</RDF:Description>
|
||||
|
||||
</RDF:RDF>
|
||||
57
mozilla/extensions/sql/sqltest/install.js
Normal file
57
mozilla/extensions/sql/sqltest/install.js
Normal file
@@ -0,0 +1,57 @@
|
||||
// this function verifies disk space in kilobytes
|
||||
function verifyDiskSpace(dirPath, spaceRequired)
|
||||
{
|
||||
var spaceAvailable;
|
||||
|
||||
// Get the available disk space on the given path
|
||||
spaceAvailable = fileGetDiskSpaceAvailable(dirPath);
|
||||
|
||||
// Convert the available disk space into kilobytes
|
||||
spaceAvailable = parseInt(spaceAvailable / 1024);
|
||||
|
||||
// do the verification
|
||||
if(spaceAvailable < spaceRequired)
|
||||
{
|
||||
logComment("Insufficient disk space: " + dirPath);
|
||||
logComment(" required : " + spaceRequired + " K");
|
||||
logComment(" available: " + spaceAvailable + " K");
|
||||
return(false);
|
||||
}
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
var srDest = 100;
|
||||
|
||||
var err = initInstall("SQL test", "SQLTEST", "0.1");
|
||||
logComment("initInstall: " + err);
|
||||
|
||||
var fProgram = getFolder("Program");
|
||||
logComment("fProgram: " + fProgram);
|
||||
|
||||
if (verifyDiskSpace(fProgram, srDest))
|
||||
{
|
||||
err = addDirectory("Program", "0.1", "bin", fProgram, "", true);
|
||||
|
||||
logComment("addDirectory() returned: " + err);
|
||||
|
||||
var chromeFolder = getFolder("Chrome", "sqltest.jar");
|
||||
registerChrome(CONTENT | DELAYED_CHROME, chromeFolder, "content/sqltest/");
|
||||
|
||||
err = getLastError();
|
||||
if (err == ACCESS_DENIED) {
|
||||
alert("Unable to write to program directory " + fProgram + ".\n You will need to restart the browser with administrator/root privileges to install this software. After installing as root (or administrator), you will need to restart the browser one more time to register the installed software.\n After the second restart, you can go back to running the browser without privileges!");
|
||||
cancelInstall(err);
|
||||
logComment("cancelInstall() due to error: " + err);
|
||||
}
|
||||
else if (err != SUCCESS) {
|
||||
cancelInstall(err);
|
||||
logComment("cancelInstall() due to error: " + err);
|
||||
}
|
||||
else {
|
||||
performInstall();
|
||||
logComment("performInstall() returned: " + err);
|
||||
}
|
||||
}
|
||||
else
|
||||
cancelInstall(INSUFFICIENT_DISK_SPACE);
|
||||
7
mozilla/extensions/sql/sqltest/jar.mn
Normal file
7
mozilla/extensions/sql/sqltest/jar.mn
Normal file
@@ -0,0 +1,7 @@
|
||||
sqltest.jar:
|
||||
content/sqltest/contents.rdf (contents.rdf)
|
||||
content/sqltest/sqltest.xul (sqltest.xul)
|
||||
content/sqltest/sqltest.js (sqltest.js)
|
||||
content/sqltest/sqltest.css (sqltest.css)
|
||||
content/sqltest/sqltestDialog.xul (sqltestDialog.xul)
|
||||
content/sqltest/sqltestDialog.js (sqltestDialog.js)
|
||||
8
mozilla/extensions/sql/sqltest/sqltest.css
Normal file
8
mozilla/extensions/sql/sqltest/sqltest.css
Normal file
@@ -0,0 +1,8 @@
|
||||
treechildren:-moz-tree-cell {
|
||||
border-right: 1px solid ThreeDFace;
|
||||
border-bottom: 1px solid ThreeDFace;
|
||||
}
|
||||
|
||||
.spacer {
|
||||
height: 10px;
|
||||
}
|
||||
126
mozilla/extensions/sql/sqltest/sqltest.js
Normal file
126
mozilla/extensions/sql/sqltest/sqltest.js
Normal file
@@ -0,0 +1,126 @@
|
||||
const alias = "urn:aliases:sqltest";
|
||||
const complete = Components.interfaces.mozISqlRequest.STATUS_COMPLETE;
|
||||
|
||||
var connection;
|
||||
var result;
|
||||
|
||||
var startupObserver = {
|
||||
onStartRequest: function(request, ctxt) {
|
||||
},
|
||||
onStopRequest: function(request, ctxt) {
|
||||
if (request.status == complete) {
|
||||
result = request.result;
|
||||
var ds = result.QueryInterface(Components.interfaces.nsIRDFDataSource);
|
||||
|
||||
var menulist = document.getElementById("statesMenulist");
|
||||
menulist.database.AddDataSource(ds);
|
||||
menulist.builder.rebuild();
|
||||
menulist.selectedIndex = 0;
|
||||
|
||||
var tree = document.getElementById("statesTree");
|
||||
tree.database.AddDataSource(ds);
|
||||
tree.builder.rebuild();
|
||||
}
|
||||
else {
|
||||
alert(request.errorMessage);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var observer = {
|
||||
onStartRequest: function(request, ctxt) {
|
||||
},
|
||||
|
||||
onStopRequest: function(request, ctxt) {
|
||||
if (request.status == complete) {
|
||||
var element = document.getElementById("asyncStateName");
|
||||
if (request.result.rowCount) {
|
||||
var enumerator = request.result.enumerate();
|
||||
enumerator.first();
|
||||
element.value = enumerator.getVariant(0);
|
||||
}
|
||||
else {
|
||||
element.value = "Not found";
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert(request.errorMessage);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function init() {
|
||||
var service = Components.classes["@mozilla.org/sql/service;1"]
|
||||
.getService(Components.interfaces.mozISqlService);
|
||||
|
||||
if (!service.hasAlias(alias)) {
|
||||
alert("The alias for the sqltest was not defined.");
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
connection = service.getConnection(alias);
|
||||
}
|
||||
catch (ex) {
|
||||
alert(service.errorMessage);
|
||||
return;
|
||||
}
|
||||
|
||||
var query = "select code, name from states";
|
||||
var request = connection.asyncExecuteQuery(query, null, startupObserver);
|
||||
}
|
||||
|
||||
function syncFindState() {
|
||||
var code = document.getElementById("syncStateCode").value
|
||||
var query = "select name from states where code = '" + code + "'";
|
||||
try {
|
||||
var result = connection.executeQuery(query);
|
||||
var element = document.getElementById("syncStateName");
|
||||
if (result.rowCount) {
|
||||
var enumerator = result.enumerate();
|
||||
enumerator.first();
|
||||
element.value = enumerator.getVariant(0);
|
||||
}
|
||||
else {
|
||||
element.value = "Not found";
|
||||
}
|
||||
}
|
||||
catch (ex) {
|
||||
alert(connection.errorMessage);
|
||||
}
|
||||
}
|
||||
|
||||
function asyncFindState() {
|
||||
var code = document.getElementById("asyncStateCode").value;
|
||||
var query = "select name from states where code = '" + code + "'";
|
||||
var request = connection.asyncExecuteQuery(query, null, observer);
|
||||
}
|
||||
|
||||
function getSelectedRowIndex() {
|
||||
var tree = document.getElementById("statesTree");
|
||||
var currentIndex = tree.currentIndex;
|
||||
var resource = tree.builderView.getResourceAtIndex(currentIndex);
|
||||
var datasource = result.QueryInterface(Components.interfaces.mozISqlDataSource);
|
||||
return datasource.getIndexOfResource(resource);
|
||||
}
|
||||
|
||||
function doInsert() {
|
||||
window.openDialog("sqltestDialog.xul", "testDialog", "chrome,modal=yes,resizable=no", result);
|
||||
}
|
||||
|
||||
function doUpdate() {
|
||||
var rowIndex = this.getSelectedRowIndex();
|
||||
window.openDialog("sqltestDialog.xul", "testDialog", "chrome,modal=yes,resizable=no", result, rowIndex);
|
||||
}
|
||||
|
||||
function doDelete() {
|
||||
var rowIndex = this.getSelectedRowIndex();
|
||||
var enumerator = result.enumerate();
|
||||
enumerator.absolute(rowIndex);
|
||||
try {
|
||||
enumerator.deleteRow();
|
||||
}
|
||||
catch(ex) {
|
||||
alert(enumerator.errorMessage);
|
||||
}
|
||||
}
|
||||
118
mozilla/extensions/sql/sqltest/sqltest.xul
Normal file
118
mozilla/extensions/sql/sqltest/sqltest.xul
Normal file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="sqltest.css" type="text/css"?>
|
||||
|
||||
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
orient="vertical"
|
||||
width="640" height="480"
|
||||
title="SQL test"
|
||||
onload="init()">
|
||||
|
||||
<script type="application/x-javascript" src="sqltest.js"/>
|
||||
|
||||
<popupset>
|
||||
<popup id="editContextMenu">
|
||||
<menuitem label="Insert" oncommand="doInsert()"/>
|
||||
<menuitem label="Update" oncommand="doUpdate()"/>
|
||||
<menuitem label="Delete" oncommand="doDelete()"/>
|
||||
</popup>
|
||||
</popupset>
|
||||
|
||||
<tabbox flex="1">
|
||||
<tabs>
|
||||
<tab label="Sync test"/>
|
||||
<tab label="Async test"/>
|
||||
<tab label="Widgets"/>
|
||||
</tabs>
|
||||
<tabpanels flex="1">
|
||||
<vbox>
|
||||
<text class="label" value="Type a state code and then hit ENTER. You should get a state name."/>
|
||||
<spacer class="spacer"/>
|
||||
<grid>
|
||||
<columns>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<text class="label" value="State code:"/>
|
||||
<hbox>
|
||||
<textbox id="syncStateCode" size="2" maxlength="2" onkeyup="if (event.keyCode == 13) syncFindState()"/>
|
||||
</hbox>
|
||||
</row>
|
||||
<row>
|
||||
<text class="label" value="State name:"/>
|
||||
<textbox id="syncStateName"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<text class="label" value="Type a state code and then hit ENTER. You should get a state name."/>
|
||||
<spacer class="spacer"/>
|
||||
<grid>
|
||||
<columns>
|
||||
<column/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<text class="label" value="State code:"/>
|
||||
<hbox>
|
||||
<textbox id="asyncStateCode" size="2" maxlength="2" onkeyup="if (event.keyCode == 13) asyncFindState()"/>
|
||||
</hbox>
|
||||
</row>
|
||||
<row>
|
||||
<text class="label" value="State name:"/>
|
||||
<textbox id="asyncStateName"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
</vbox>
|
||||
<vbox>
|
||||
<text class="label" value="You should see a menulist filled with all the states."/>
|
||||
<spacer class="spacer"/>
|
||||
<hbox>
|
||||
<menulist id="statesMenulist"
|
||||
datasources="rdf:null" ref="SQL:ResultRoot">
|
||||
<template>
|
||||
<menupopup>
|
||||
<menuitem uri="..."
|
||||
value="rdf:http://www.mozilla.org/SQL-rdf#code"
|
||||
label="rdf:http://www.mozilla.org/SQL-rdf#name"/>
|
||||
</menupopup>
|
||||
</template>
|
||||
</menulist>
|
||||
</hbox>
|
||||
<spacer class="spacer"/>
|
||||
<text value="You should see codes and names of all states in this tree. You can even edit them using the context menu."/>
|
||||
<spacer class="spacer"/>
|
||||
<tree id="statesTree" flex="1"
|
||||
context="editContextMenu"
|
||||
seltype="single" enableColumnDrag="true"
|
||||
datasources="rdf:null" ref="SQL:ResultRoot" flags="dont-build-content">
|
||||
<treecols>
|
||||
<treecol id="codeCol"
|
||||
label="State code"
|
||||
sort="rdf:http://www.mozilla.org/SQL-rdf#code"
|
||||
sortActive="true" sortDirection="ascending"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol id="nameCol" flex="1"
|
||||
label="State name"
|
||||
sort="rdf:http://www.mozilla.org/SQL-rdf#name"/>
|
||||
</treecols>
|
||||
<template>
|
||||
<treechildren>
|
||||
<treeitem uri="rdf:*">
|
||||
<treerow>
|
||||
<treecell label="rdf:http://www.mozilla.org/SQL-rdf#code"/>
|
||||
<treecell label="rdf:http://www.mozilla.org/SQL-rdf#name"/>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</template>
|
||||
</tree>
|
||||
</vbox>
|
||||
</tabpanels>
|
||||
</tabbox>
|
||||
|
||||
</window>
|
||||
41
mozilla/extensions/sql/sqltest/sqltestDialog.js
Normal file
41
mozilla/extensions/sql/sqltest/sqltestDialog.js
Normal file
@@ -0,0 +1,41 @@
|
||||
var result;
|
||||
var enumerator;
|
||||
|
||||
function init() {
|
||||
result = window.arguments[0];
|
||||
enumerator = result.enumerate();
|
||||
if (window.arguments.length == 2) {
|
||||
enumerator.absolute(window.arguments[1]);
|
||||
var columnCount = result.columnCount;
|
||||
for(var i = 0; i < columnCount; i++) {
|
||||
if (!enumerator.isNull(i)) {
|
||||
var element = document.getElementById(result.getColumnName(i));
|
||||
element.value = enumerator.getVariant(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onAccept() {
|
||||
var columnCount = result.columnCount;
|
||||
for (var i = 0; i < columnCount; i++) {
|
||||
var element = document.getElementById(result.getColumnName(i));
|
||||
if (element.value)
|
||||
enumerator.setVariant(i, element.value);
|
||||
else
|
||||
enumerator.setNull(i);
|
||||
}
|
||||
|
||||
try {
|
||||
if (window.arguments.length == 2)
|
||||
enumerator.updateRow();
|
||||
else
|
||||
enumerator.insertRow();
|
||||
}
|
||||
catch(ex) {
|
||||
alert(enumerator.errorMessage);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
33
mozilla/extensions/sql/sqltest/sqltestDialog.xul
Normal file
33
mozilla/extensions/sql/sqltest/sqltestDialog.xul
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0"?>
|
||||
|
||||
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
|
||||
|
||||
<dialog id="testDialog"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
title="Test dialog"
|
||||
buttons="accept,cancel" buttonpack="center"
|
||||
ondialogaccept="return onAccept();"
|
||||
onload="init()">
|
||||
|
||||
<script type="application/x-javascript" src="sqltestDialog.js"/>
|
||||
|
||||
<grid flex="1">
|
||||
<columns>
|
||||
<column/>
|
||||
<column flex="1"/>
|
||||
</columns>
|
||||
<rows>
|
||||
<row>
|
||||
<label value="Code:"/>
|
||||
<hbox>
|
||||
<textbox id="code" size="2" maxlength="2" oninput="this.value = this.value.toUpperCase()"/>
|
||||
</hbox>
|
||||
</row>
|
||||
<row>
|
||||
<label value="Name:"/>
|
||||
<textbox id="name" size="30" maxlength="30"/>
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
||||
</dialog>
|
||||
4
mozilla/extensions/sql/sqltest/states.sql
Normal file
4
mozilla/extensions/sql/sqltest/states.sql
Normal file
@@ -0,0 +1,4 @@
|
||||
create table states (
|
||||
code varchar(2) primary key,
|
||||
name varchar(30)
|
||||
);
|
||||
51
mozilla/extensions/sql/sqltest/states.txt
Normal file
51
mozilla/extensions/sql/sqltest/states.txt
Normal file
@@ -0,0 +1,51 @@
|
||||
AL Alabama
|
||||
AK Alaska
|
||||
AZ Arizona
|
||||
AR Arkansas
|
||||
CA California
|
||||
CO Colorado
|
||||
CT Connecticut
|
||||
DE Delaware
|
||||
FL Florida
|
||||
GA Georgia
|
||||
HI Hawaii
|
||||
ID Idaho
|
||||
IL Illinois
|
||||
IN Indiana
|
||||
IA Iowa
|
||||
KS Kansas
|
||||
KY Kentucky
|
||||
LA Louisiana
|
||||
ME Maine
|
||||
MD Maryland
|
||||
MA Massachusetts
|
||||
MI Michigan
|
||||
MN Minnesota
|
||||
MS Mississippi
|
||||
MO Missouri
|
||||
MT Montana
|
||||
NE Nebraska
|
||||
NV Nevada
|
||||
NH New Hampshire
|
||||
NJ New Jersey
|
||||
NM New Mexico
|
||||
NY New York
|
||||
NC North Carolina
|
||||
ND North Dakota
|
||||
OH Ohio
|
||||
OK Oklahoma
|
||||
OR Oregon
|
||||
PA Pennsylvania
|
||||
RI Rhode Island
|
||||
SC South Carolina
|
||||
SD South Dakota
|
||||
TN Tennessee
|
||||
TX Texas
|
||||
UT Utah
|
||||
VT Vermont
|
||||
VA Virginia
|
||||
WA Washington
|
||||
DC Washington,D.C.
|
||||
WV West Virginia
|
||||
WI Wisconsin
|
||||
WY Wyoming
|
||||
Reference in New Issue
Block a user