XUI: XuiWikka: "XUI (pronounced Zoo'ey) is an Open Source, Rich Internet Application (RIA) framework for building applications in Java and XML. XUI supports Swing, AWT, SWT and HTML widget sets, letting you code in XML or Java or a mix of both. XUI used the well Model-View-Controller pattern to help separate the setup of user interfaces from business logic and data handling. The framework has been developed by Xoetrope∞, who also host the XUI Zone∞ where you will find more extensive documenation.
Welcome to the XUI Wikki. This Wiki is dedicated to all things XUI, and includes documentation of features, hints, tips and anything that might be of interest to users and developers of XUI applications."
Friday, December 29, 2006
Thursday, December 28, 2006
Tuesday, December 26, 2006
The Hadoop Distributed File System: Architecture and Design
The Hadoop Distributed File System: Architecture and Design: "# Introduction
# Assumptions and Goals
* Hardware Failure
* Streaming Data Access
* Large Data Sets
* Simple Coherency Model
* Moving computation is cheaper than moving data
* Portability across Heterogeneous Hardware and Software Platforms
# Namenode and Datanode
# The File System Namespace
# Data Replication
* Replica Placement . The First Baby Steps
* Replica Selection
* SafeMode
# The Persistence of File System Metadata
# The Communication Protocol
# Robustness
* Data Disk Failure, Heartbeats and Re-Replication
* Cluster Rebalancing
* Data Correctness
* Metadata Disk Failure
* Snapshots
# Data Organization
* Data Blocks
* Staging
* Pipelining
# Accessibility
* DFSShell
* DFSAdmin
* Browser Interface
# Space Reclamation
* File Deletes and Undelete
* Decrease Replication Factor
# References"
# Assumptions and Goals
* Hardware Failure
* Streaming Data Access
* Large Data Sets
* Simple Coherency Model
* Moving computation is cheaper than moving data
* Portability across Heterogeneous Hardware and Software Platforms
# Namenode and Datanode
# The File System Namespace
# Data Replication
* Replica Placement . The First Baby Steps
* Replica Selection
* SafeMode
# The Persistence of File System Metadata
# The Communication Protocol
# Robustness
* Data Disk Failure, Heartbeats and Re-Replication
* Cluster Rebalancing
* Data Correctness
* Metadata Disk Failure
* Snapshots
# Data Organization
* Data Blocks
* Staging
* Pipelining
# Accessibility
* DFSShell
* DFSAdmin
* Browser Interface
# Space Reclamation
* File Deletes and Undelete
* Decrease Replication Factor
# References"
Monday, December 11, 2006
Wednesday, December 06, 2006
FrontPage - Lucene-hadoop Wiki
FrontPage - Lucene-hadoop Wiki: "Hadoop DFS
Hadoop's Distributed File System is designed to reliably store very large files across machines in a large cluster. It is inspired by the [WWW] Google File System. Hadoop DFS stores each file as a sequence of blocks, all blocks in a file except the last block are the same size. Blocks belonging to a file are replicated for fault tolerance. The block size and replication factor are configurable per file. Files in HDFS are 'write once' and have strictly one writer at any time."
Hadoop's Distributed File System is designed to reliably store very large files across machines in a large cluster. It is inspired by the [WWW] Google File System. Hadoop DFS stores each file as a sequence of blocks, all blocks in a file except the last block are the same size. Blocks belonging to a file are replicated for fault tolerance. The block size and replication factor are configurable per file. Files in HDFS are 'write once' and have strictly one writer at any time."
Monday, December 04, 2006
DBSight: Full-text database search platform/engine
DBSight: Full-text database search platform/engine: "Instead of weeks or even months to develop a full-text search for your data, if you know how to use DBSight, you can easily create the full-text search literally in minutes.
Feature-rich
Besides Google-like full-text search, you can have:
* Adjust Ranking by combination of relevance and fields like product price, score, comments cout, etc
* Summarized and highlighted results
* Amazon-like Results counted for each category, and sub-category
* Order results by the field you choose
* Recent searches history
* RSS feed for latest match
* Spelling check
* Pagination of the results
* Automatic results clustering
* Multi-Server mode for Server Clustering"
Feature-rich
Besides Google-like full-text search, you can have:
* Adjust Ranking by combination of relevance and fields like product price, score, comments cout, etc
* Summarized and highlighted results
* Amazon-like Results counted for each category, and sub-category
* Order results by the field you choose
* Recent searches history
* RSS feed for latest match
* Spelling check
* Pagination of the results
* Automatic results clustering
* Multi-Server mode for Server Clustering"
dbclient: DBClient, yet another Jdbc client tool
dbclient: DBClient, yet another Jdbc client tool: "DBClient is a new Open Source Tool for connecting to jdbc compliant relational databases.
Specific extensions will take care of each RDBMS implementation."
Specific extensions will take care of each RDBMS implementation."
JDOInstruments -java object database- oodb -oodbms
JDOInstruments -java object database- oodb -oodbms: "# Byte-Code Enhancement of classes
# Byte-Code Compatibility
# Datastore identity
# Optimistic Transaction
# Nontransactional Read
# Retain values
# Restore values
# Second Class PersistenceCapable objects
# J2EE Integration
# Query (JDOQL)
# Index
# Schema Evolution"
# Byte-Code Compatibility
# Datastore identity
# Optimistic Transaction
# Nontransactional Read
# Retain values
# Restore values
# Second Class PersistenceCapable objects
# J2EE Integration
# Query (JDOQL)
# Index
# Schema Evolution"
Monday, November 27, 2006
Friday, November 17, 2006
Friday, November 10, 2006
Thursday, November 09, 2006
Tuesday, November 07, 2006
Friday, November 03, 2006
Tuesday, October 31, 2006
svgsalamander: Default Project Content
svgsalamander: Default Project Content: "SVG Salamander is an SVG engine for Java that's designed to be small, fast, and allow programmers to use it with a minimum of fuss. It's in particular targeted for making it easy to integrate SVG into Java games and making it much easier for artists to design 2D game content - from rich interactive menus to charts and graphcs to complex animations."
xhtmlrenderer:
xhtmlrenderer:
Flying Saucer supports the bulk of the strict XHTML and CSS 2.1 standards. We are working towards complete (and correct) feature support of these standards, but not everything works yet. Most of it is there, though.
General XHTML / CSS features
* Formatted text: basically everything: paragraphs and spans, bold, italic, font sizes, text alignment, horizontal alignment, different fonts
* Box model: border, padding, margin, colors, background images, styled borders
* Full positioning support: static, relative, absolute, and fixed, and floats. There are still some issues dealing with multiple stacked floats. This code is being rewritten.
* Tables: Table support is currently being rewritten so check on the mailing list to see what works.
* Forms: Every standard form control is represented. There are still some bugs with alignment.
* Images: both as inline images with the tag and with background images.
* :hover styles for (dynamic) rollover effects
* Anchors, both external and in-document
* Lists: lists with proper positioning and
* CSS selectors. All CSS selectors in the spec should be supported, even the sibling/child ones
* Pagination
* Margin Collapsing
* R7pre1: Shrink-to-fit sizing. Turned on for auto-width floats, inline-blocks, and absolutely positioned content.
* R7pre1: min-width, max-width, min-height, and max-height properties, for non-replaced content only.
Flying Saucer supports the bulk of the strict XHTML and CSS 2.1 standards. We are working towards complete (and correct) feature support of these standards, but not everything works yet. Most of it is there, though.
General XHTML / CSS features
* Formatted text: basically everything: paragraphs and spans, bold, italic, font sizes, text alignment, horizontal alignment, different fonts
* Box model: border, padding, margin, colors, background images, styled borders
* Full positioning support: static, relative, absolute, and fixed, and floats. There are still some issues dealing with multiple stacked floats. This code is being rewritten.
* Tables: Table support is currently being rewritten so check on the mailing list to see what works.
* Forms: Every standard form control is represented. There are still some bugs with alignment.
* Images: both as inline images with the tag and with background images.
* :hover styles for (dynamic) rollover effects
* Anchors, both external and in-document
* Lists: lists with proper positioning and
* CSS selectors. All CSS selectors in the spec should be supported, even the sibling/child ones
* Pagination
* Margin Collapsing
* R7pre1: Shrink-to-fit sizing. Turned on for auto-width floats, inline-blocks, and absolutely positioned content.
* R7pre1: min-width, max-width, min-height, and max-height properties, for non-replaced content only.
Wednesday, October 25, 2006
Sunday, October 22, 2006
Thursday, October 19, 2006
1060 Research
1060 Research
1060 Research is an industry leading innovator of software infrastructure.
We are driven by a vision that software should be simple, easy to comprehend, and inherently flexible. Software that is simple can be assembled quickly, costs less, and readily adapts to inevitable changes. Our customers have built sophisticated enterprise software for a fraction of the cost of an equivalent Java J2EE or .Net based system.
A focus on code leads to object-oriented designs and results in brittle systems. We turned the development equation around and focused on information instead. Our research uncovered a simple, powerful, unifying idea that moves code and objects to a supporting role behind information resources and as a result, has transformed software development for our customers.
To realise our vision, we created NetKernel. NetKernel is simple, sophisticated and powerful. NetKernel is different to be better... We invite you to learn about NetKernel and explore it first hand by downloading the complete product.
1060 Research is an industry leading innovator of software infrastructure.
We are driven by a vision that software should be simple, easy to comprehend, and inherently flexible. Software that is simple can be assembled quickly, costs less, and readily adapts to inevitable changes. Our customers have built sophisticated enterprise software for a fraction of the cost of an equivalent Java J2EE or .Net based system.
A focus on code leads to object-oriented designs and results in brittle systems. We turned the development equation around and focused on information instead. Our research uncovered a simple, powerful, unifying idea that moves code and objects to a supporting role behind information resources and as a result, has transformed software development for our customers.
To realise our vision, we created NetKernel. NetKernel is simple, sophisticated and powerful. NetKernel is different to be better... We invite you to learn about NetKernel and explore it first hand by downloading the complete product.
Monday, October 16, 2006
Documentation - Safehaus
Documentation - Safehaus
Penrose is a java-based virtual directory server. Virtual directory enables federating (aggregating) identity data from multiple heterogeneous sources like directory, databases, flat files, and web services - real-time - and makes it available to identity consumers via LDAP.
Penrose is a java-based virtual directory server. Virtual directory enables federating (aggregating) identity data from multiple heterogeneous sources like directory, databases, flat files, and web services - real-time - and makes it available to identity consumers via LDAP.
Wednesday, October 11, 2006
Tuesday, September 19, 2006
Execute Query
Execute Query: "Introducing Execute Query
Execute Query is an operating system independent database utility written entirely in Java.
Using the power provided by Java Database Connectivity (JDBC), Execute Query provides the means by which to manipulate the database from simple queries to table creation and import/export of an entire schema's data. See Features for a list of some of the available tools.
Execute Query has been tested under Windows, Linux and Solaris using Java Runtime Environment v1.5 - Java v1.5.0 is recommended. If you do not have the required Java version please go to Sun's Java website.
Use the links on the navigation bar to the left to submit any suggestions or bugs. Your comments are most welcome and appreciated!
This software was developed using the NetBeans Java IDE on a Debian GNU/Linux system.
Execute Query is very much a work in progress and is continually being extended and refined with new features and tools. Interests of contribution are welcome.
Execute Query is available completely free of charge and will remain so under the GNU Public License."
Execute Query is an operating system independent database utility written entirely in Java.
Using the power provided by Java Database Connectivity (JDBC), Execute Query provides the means by which to manipulate the database from simple queries to table creation and import/export of an entire schema's data. See Features for a list of some of the available tools.
Execute Query has been tested under Windows, Linux and Solaris using Java Runtime Environment v1.5 - Java v1.5.0 is recommended. If you do not have the required Java version please go to Sun's Java website.
Use the links on the navigation bar to the left to submit any suggestions or bugs. Your comments are most welcome and appreciated!
This software was developed using the NetBeans Java IDE on a Debian GNU/Linux system.
Execute Query is very much a work in progress and is continually being extended and refined with new features and tools. Interests of contribution are welcome.
Execute Query is available completely free of charge and will remain so under the GNU Public License."
Wednesday, September 13, 2006
WinFuture.de - Kritische L�cke in Suns Java Web Start
WinFuture.de - Kritische L�cke in Suns Java Web Start: "Kritische L�cke in Suns Java Web Start
von blizzard f�r WinFuture.de
Es ist nun bekannt geworden, dass sich in Sun Java Web Start eine kritische L�cke befindet und somit die Sicherheit Ihres Computers gef�hrdet wird. Durch diese Schwachstelle ist es Sch�dlingen m�glich ihr System zu infizieren, sobald Sie eine pr�parierte Internetseite besuchen. Die Web Start Technologie macht es m�glich Java Anwendungen schneller und leichter �ber einen Webserver zu verteilen damit Sie �ber ihren Webbrowser aufgerufen werden k�nnen.
Durch diesen Fehler im Web Start Launcher ist es Java Anwendungen m�glich, Zugriffsrechte auf Ihrem Computer zu erh�hen, installierte Programme zu starten und sich Schreib- und Leserechte zu erteilen. Die Sandbox ist normalerweise daf�r zust�ndig, um solche nicht autorisierten Zugriffe auf Ihren Pc zu verhindern. Durch die genannte L�cke ist es aber einem potenziellen Angreifer m�glich mit Hilfe manipulierter JNLP Dateien, eigene Kommandos an die Java Virtual Machine zu geben und damit die Sandbox abzuschalten.
Die Betriebssysteme Solaris, Windows und Linux in allen Versionen 1.4.2 der Java 2 Platform Standard Edition (J2SE) bis einschlie�lich 1.4.2_06 sind von diesem Fehler betroffen. Von diesem Fehler sind J2SE 5.0 und J2SE vor Version 1.4.2 nicht betroffen. Dieser Fehler tritt ausschlie�lich bei den Webbrowsern Firefox, Internet Explorer und Mozilla auf, jedoch nicht beim Opere Browser, da dieser von Hause aus nicht mit JNLP Dateien verkn�pft wird.
Die Software Entwickler haben den Fehler erkannt und in der neuen Version J2SE 1.4.2_07 beseitigt. Ebenso besteht die M�glichkeit, dass Anwender ihr System gleich auf J2SE 5.0 Update 2 aktualisieren. Bei den meisten Web Start Installationen ist das Auto Update aktiv, hier wird nur die Zustimmung des Updates ben�tigt. Falls Sie das Update nicht installieren wollen empfehlen die Hersteller, den Start von Java Web Start Anwendungen durch Ihren Browser zu deaktivieren. Au�erdem r�t Sun dazu, dies auch noch mal manuell abzuschalten, da sich die Anwendungen auch �ber die Kommandozeile starten lassen. Hierzu soll der Launcher (javaws.exe unter Windows und javaws unter Solaris und Linux) umbenannt werden. Eine genaue Anleitung hierzu finden Sie aber auch unter dem angebenden Link. "
von blizzard f�r WinFuture.de
Es ist nun bekannt geworden, dass sich in Sun Java Web Start eine kritische L�cke befindet und somit die Sicherheit Ihres Computers gef�hrdet wird. Durch diese Schwachstelle ist es Sch�dlingen m�glich ihr System zu infizieren, sobald Sie eine pr�parierte Internetseite besuchen. Die Web Start Technologie macht es m�glich Java Anwendungen schneller und leichter �ber einen Webserver zu verteilen damit Sie �ber ihren Webbrowser aufgerufen werden k�nnen.
Durch diesen Fehler im Web Start Launcher ist es Java Anwendungen m�glich, Zugriffsrechte auf Ihrem Computer zu erh�hen, installierte Programme zu starten und sich Schreib- und Leserechte zu erteilen. Die Sandbox ist normalerweise daf�r zust�ndig, um solche nicht autorisierten Zugriffe auf Ihren Pc zu verhindern. Durch die genannte L�cke ist es aber einem potenziellen Angreifer m�glich mit Hilfe manipulierter JNLP Dateien, eigene Kommandos an die Java Virtual Machine zu geben und damit die Sandbox abzuschalten.
Die Betriebssysteme Solaris, Windows und Linux in allen Versionen 1.4.2 der Java 2 Platform Standard Edition (J2SE) bis einschlie�lich 1.4.2_06 sind von diesem Fehler betroffen. Von diesem Fehler sind J2SE 5.0 und J2SE vor Version 1.4.2 nicht betroffen. Dieser Fehler tritt ausschlie�lich bei den Webbrowsern Firefox, Internet Explorer und Mozilla auf, jedoch nicht beim Opere Browser, da dieser von Hause aus nicht mit JNLP Dateien verkn�pft wird.
Die Software Entwickler haben den Fehler erkannt und in der neuen Version J2SE 1.4.2_07 beseitigt. Ebenso besteht die M�glichkeit, dass Anwender ihr System gleich auf J2SE 5.0 Update 2 aktualisieren. Bei den meisten Web Start Installationen ist das Auto Update aktiv, hier wird nur die Zustimmung des Updates ben�tigt. Falls Sie das Update nicht installieren wollen empfehlen die Hersteller, den Start von Java Web Start Anwendungen durch Ihren Browser zu deaktivieren. Au�erdem r�t Sun dazu, dies auch noch mal manuell abzuschalten, da sich die Anwendungen auch �ber die Kommandozeile starten lassen. Hierzu soll der Launcher (javaws.exe unter Windows und javaws unter Solaris und Linux) umbenannt werden. Eine genaue Anleitung hierzu finden Sie aber auch unter dem angebenden Link. "
Friday, September 01, 2006
MoTechno : IBM - JavaCard JCOP
MoTechno : IBM - JavaCard JCOP: "JCOP-SmartCard as IBM implementation of the JavaCard 2.2.1 OS
with 32kB EEPROM, Triple-DES Coprozessor and RSA Coprozessor."
with 32kB EEPROM, Triple-DES Coprozessor and RSA Coprozessor."
OpenReports
OpenReports: "OpenReports is a powerful, flexible, and easy to use open source web reporting solution that provides browser based, parameter driven, dynamic report generation and flexible report scheduling capabilities. OpenReports supports JasperReports, an excellent full featured open source reporting engine, and was developed using leading open source components including WebWork, Velocity, Quartz, and Hibernate. "
Tuesday, August 29, 2006
Codehaus XFire - Home
Codehaus XFire - Home: "Codehaus XFire is a next-generation java SOAP framework. Codehaus XFire makes service oriented development approachable through its easy to use API and support for standards. It is also highly performant since it is built on a low memory StAX based model.
Features & Goals
* Support for important Web Service standards - SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.
* High performance SOAP Stack
* Pluggable bindings POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support
* JSR 181 API to configure services via Java 5 and 1.4 (Commons attributes JSR 181 syntax)
* Support for many different transports - HTTP, JMS, XMPP, In-JVM, etc.
* Embeddable and Intuitive API
* Spring, Pico, Plexus, and Loom support.
* JBI Support
* Client and server stub generation
* JAX-WS early access support"
Features & Goals
* Support for important Web Service standards - SOAP, WSDL, WS-I Basic Profile, WS-Addressing, WS-Security, etc.
* High performance SOAP Stack
* Pluggable bindings POJOs, XMLBeans, JAXB 1.1, JAXB 2.0, and Castor support
* JSR 181 API to configure services via Java 5 and 1.4 (Commons attributes JSR 181 syntax)
* Support for many different transports - HTTP, JMS, XMPP, In-JVM, etc.
* Embeddable and Intuitive API
* Spring, Pico, Plexus, and Loom support.
* JBI Support
* Client and server stub generation
* JAX-WS early access support"
Stripes - Home
Stripes - Home: "Stripes is a presentation framework for building web applications using the latest Java technologies. The main driver behind Stripes is that web application development in Java is just too much work! It seems like every existing framework requires gobs of configuration. Struts is pretty feature-light and has some serious architectural issues (see Stripes vs. Struts for details). Others, like WebWork 2 and Spring-MVC are much better, but still require a lot of configuration, and seem to require you to learn a whole new language just to get started."
JExcelApi
JExcelApi: "Java Excel API is a mature, open source java API enabling developers to read, write, and modifiy Excel spreadsheets dynamically. Now java developers can read Excel spreadsheets, modify them with a convenient and simple API, and write the changes to any output stream (e.g. disk, HTTP, database, or any socket).
Any operating system which can run a Java virtual machine (i.e., not just Windows) can both process and deliver Excel spreadsheets. Because it is Java, the API can be invoked from within a servlet, thus giving access to Excel spreadsheets over internet and intranet web applications."
Any operating system which can run a Java virtual machine (i.e., not just Windows) can both process and deliver Excel spreadsheets. Because it is Java, the API can be invoked from within a servlet, thus giving access to Excel spreadsheets over internet and intranet web applications."
Wednesday, August 23, 2006
opensso: Home
opensso: Home: "The Open Web SSO project (OpenSSO) provides core identity services to simplify the implementation of transparent single sign-on (SSO) as a security component in a network infrastructure. OpenSSO provides the foundation for integrating diverse web applications that might typically operate against a disparate set of identity repositories and are hosted on a variety of platforms such as web and application servers. This project is based on the code base of Sun JavaTM System Access Manager, a core identity infrastructure product offered by Sun Microsystems."
Monday, August 21, 2006
Friday, August 18, 2006
Java Plugin Framework (JPF) - Home
Java Plugin Framework (JPF) - Home: "The JPF framework is based around the concept of 'plug-ins'. A plug-in is a structured component that contributes code and resources to the system and describes them in a structured way. These plug-ins can further define extension points, well-defined method hooks that can be extended by other plug-ins. When one plug-in provides an implementation of an extension point defined by another plug-in, we say that it adds an extension to the system. This approach allows developers using JPF to build highly modular and easily extendible applications."
Wednesday, August 16, 2006
java.net: A Brief Introduction to IoC
java.net: A Brief Introduction to IoC: "The Theory of IoC
The best way to describe what IoC is about, and what benefits it can provide, is to look at a simple example. The following JDBCDataManger class is used to manage our application's accessing of the database. This application is currently using raw JDBC for persistence. To access the persistence store via JDBC, the JDBCDataManger will need a DataSource object. The standard approach would be to hard code this DataSource object into the class, like this:"
The best way to describe what IoC is about, and what benefits it can provide, is to look at a simple example. The following JDBCDataManger class is used to manage our application's accessing of the database. This application is currently using raw JDBC for persistence. To access the persistence store via JDBC, the JDBCDataManger will need a DataSource object. The standard approach would be to hard code this DataSource object into the class, like this:"
Wednesday, August 09, 2006
TestNG - Welcome
TestNG - Welcome: "TestNG is a testing framework inspired from JUnit and NUnit but introducing some new functionalities that make it more powerful and easier to use, such as:
* JDK 5 Annotations (JDK 1.4 is also supported with JavaDoc annotations).
* Flexible test configuration.
* Support for data-driven testing (with @DataProvider).
* Support for parameters.
* Allows distribution of tests on slave machines.
* Powerful execution model (no more TestSuite).
* Supported by a variety of tools and plug-ins (Eclipse, IDEA, Maven, etc...).
* Embeds BeanShell for further flexibility.
* Default JDK functions for runtime and logging (no dependencies).
* Dependent methods for application server testing.
TestNG is designed to cover all categories of tests: unit, functional, end-to-end, integration, etc..."
* JDK 5 Annotations (JDK 1.4 is also supported with JavaDoc annotations).
* Flexible test configuration.
* Support for data-driven testing (with @DataProvider).
* Support for parameters.
* Allows distribution of tests on slave machines.
* Powerful execution model (no more TestSuite).
* Supported by a variety of tools and plug-ins (Eclipse, IDEA, Maven, etc...).
* Embeds BeanShell for further flexibility.
* Default JDK functions for runtime and logging (no dependencies).
* Dependent methods for application server testing.
TestNG is designed to cover all categories of tests: unit, functional, end-to-end, integration, etc..."
Friday, August 04, 2006
Swingweb - Swingweb - Introduction
Swingweb - Swingweb - Introduction: "Swingweb is a web-application framework that enables AWT/Swing application to operate inside a web container and presented as a web application to the web browser, purely in HTML/CSS/javascript. The swing application will render and behave in the web-container the same as it would as a desktop application. There is little knowledge required for the developer to start developing swingweb application as long as they are familiar with swing UI development. "
Monday, July 24, 2006
Launch4j - Cross-platform Java executable wrapper
Launch4j - Cross-platform Java executable wrapper: "Launch4j is a cross-platform tool for wrapping Java applications distributed as jars in lightweight Windows native executables. The executable can be configured to search for a certain JRE version or use a bundled one, and it's possible to set runtime options, like the initial/max heap size. The wrapper also provides better user experience through an application icon, a native pre-JRE splash screen, a custom process name, and a Java download page in case the appropriate JRE cannot be found."
Friday, July 21, 2006
Monday, July 17, 2006
Wednesday, July 12, 2006
Webapplication Unit Tests - Watij
start - Watij: "Watij (pronounced wattage) stands for Web Application Testing in Java. Watij is a pure Java API created to allow for the automation of web applications. Based on the simplicity of Watir and enhanced by the power of Java, Watij automates functional testing of web applications through a real browser. Currently Watij supports automating Internet Explorer on Windows only. Future plans are in place to support others like Mozilla. "
Thursday, July 06, 2006
Commons VFS - Commons Virtual File System
Commons�VFS - Commons Virtual File System: "Commons VFS provides a single API for accessing various different file systems. It presents a uniform view of the files from various different sources, such as the files on local disk, on an HTTP server, or inside a Zip archive."
Tuesday, July 04, 2006
EJBCA - The J2EE Certificate Authority - Welcome
EJBCA - The J2EE Certificate Authority - Welcome: "EJBCA is a fully functional Certificate Authority. Based on J2EE technology it constitutes a robust, high performance and component based CA. Both flexible and platform independent, EJBCA can be used standalone or integrated in any J2EE application.
EJBCA is an enterprise class PKI, meaning that you can use EJBCA to build a complete PKI infrastructure for your organisation. If you only want to issue a few single certificates for testing, there are probably options that will get you started quicker, but if you want a serious PKI we recommend EJBCA.
You can use EJBCA to issue certificates for different purposes such as:
* Strong authentication for users accessing your intranet/extranet/internet resources.
* Secure communication with SSL servers and SSL clients.
* Smart card based login to Windows and/or Linux.
* Signing and enrypting email.
* VPN connections by issuing certificates to your VPN routers such as OpenVPN, Cisco, Juniper etc.
* Client VPN access with certificates in users VPN clients.
* Single sign-on by using a single certificate to secure logon to web applications.
* Creating signed documents.
* Issue citizen certificates for access to government resourses, used in passports etc.
* ... and many many more ..."
EJBCA is an enterprise class PKI, meaning that you can use EJBCA to build a complete PKI infrastructure for your organisation. If you only want to issue a few single certificates for testing, there are probably options that will get you started quicker, but if you want a serious PKI we recommend EJBCA.
You can use EJBCA to issue certificates for different purposes such as:
* Strong authentication for users accessing your intranet/extranet/internet resources.
* Secure communication with SSL servers and SSL clients.
* Smart card based login to Windows and/or Linux.
* Signing and enrypting email.
* VPN connections by issuing certificates to your VPN routers such as OpenVPN, Cisco, Juniper etc.
* Client VPN access with certificates in users VPN clients.
* Single sign-on by using a single certificate to secure logon to web applications.
* Creating signed documents.
* Issue citizen certificates for access to government resourses, used in passports etc.
* ... and many many more ..."
Sunday, July 02, 2006
contineo - Open Source Document Management
contineo - Open Source Document Management: "Contineo in a few words...
Contineo is a web based document management system. It supports its users by managing documents in most popular formats. Contineo aims to fulfill all phases of document lifecycle. You can create and develop documents by using office software. With contineo itself, you can publish, search, and manage the versions of documents. Further, you can communicate with some other users directly or via e-mail.
Contineo was founded as a pure Java project in 2003. It is the attempt of the conversion of an easy to use und easy to extend document management system. That's why contineo is developed under an open source license.
At the moment contineo finally exists in version 2.0. Version 2.1 will be coming soon."
Contineo is a web based document management system. It supports its users by managing documents in most popular formats. Contineo aims to fulfill all phases of document lifecycle. You can create and develop documents by using office software. With contineo itself, you can publish, search, and manage the versions of documents. Further, you can communicate with some other users directly or via e-mail.
Contineo was founded as a pure Java project in 2003. It is the attempt of the conversion of an easy to use und easy to extend document management system. That's why contineo is developed under an open source license.
At the moment contineo finally exists in version 2.0. Version 2.1 will be coming soon."
Friday, June 30, 2006
atleap: Blandware AtLeap - multilingual free Java CMS with full text search
atleap: Blandware AtLeap - multilingual free Java CMS with full text search: "Blandware AtLeap is a multilingual free Java CMS (Content Management System) with full-text search engine. Blandware AtLeap is a framework which allows you to rapidly start your own Web application.
The idea of the AtLeap project is based on my many years’ experience of management in the area of the site development. Blandware AtLeap is destined to creating both content-based sites and web applications with complicated business logic.
The most part of the site development and maintenance processes is the content (mainly texts) modifications in accordance with changeable customer requirements. There is CMS necessity which can allow shifting this routine work from technical to content specialists (advertising manager, linguist, translator etc.) who usually has not HTML knowledge or even to the customer representative who possesses most up-to-date and precise information in application domain."
The idea of the AtLeap project is based on my many years’ experience of management in the area of the site development. Blandware AtLeap is destined to creating both content-based sites and web applications with complicated business logic.
The most part of the site development and maintenance processes is the content (mainly texts) modifications in accordance with changeable customer requirements. There is CMS necessity which can allow shifting this routine work from technical to content specialists (advertising manager, linguist, translator etc.) who usually has not HTML knowledge or even to the customer representative who possesses most up-to-date and precise information in application domain."
Alfresco Community Network - Open Source Content Management
Alfresco Community Network - Open Source Content Management: "The Alfresco Community Network is designed for developers to have access to the latest Enterprise Content Management technology. It is a freely downloadable version of the leading open source Enterprise Content Management system. It is supported by an active community of open source developers. Alfresco Community Network is for:"
Sunday, June 25, 2006
DataVision Home
DataVision Home: "DataVision is an Open Source reporting tool similar to Crystal Reports. Reports can be designed using a drag-and-drop GUI. They may be run, viewed, and printed from the application or exported as HTML, XML, PDF, LaTeX2e, DocBook, or tab- or comma-delimited text files. The output files produced by LaTeX2e and DocBook can in turn be used to produce PDF, text, HTML, PostScript, and more.
DataVision is written in Java and runs almost anywhere. It can generate reports from databases or text data files. Any database with an available JDBC driver should work: Oracle, PostgreSQL, MySQL, Informix, hsqldb, Microsoft Access, Progress, and more. Columns read from text files can be separated by any character.
Report descriptions are stored as XML files. This means you can not only use the DataVision GUI but you may also edit reports using your favorite text editor."
DataVision is written in Java and runs almost anywhere. It can generate reports from databases or text data files. Any database with an available JDBC driver should work: Oracle, PostgreSQL, MySQL, Informix, hsqldb, Microsoft Access, Progress, and more. Columns read from text files can be separated by any character.
Report descriptions are stored as XML files. This means you can not only use the DataVision GUI but you may also edit reports using your favorite text editor."
validation: Home
validation: Home: "The JGoodies Validation helps you validate user input in Swing applications and report validation errors and warnings. It has been designed to work with different architectures and programming flavors."
Saturday, June 24, 2006
JCCKit
JCCKit: "The JCCKit is a small (< 100Kb) library and a very flexible framework for creating scientific charts and plots.
JCCKit is written for the JDK™ 1.1.8 platform (except of a Graphics2D renderer). Thus, it is suitable for scientific Applets and for PDA's running a PersonalJava™ implementation."
JCCKit is written for the JDK™ 1.1.8 platform (except of a Graphics2D renderer). Thus, it is suitable for scientific Applets and for PDA's running a PersonalJava™ implementation."
Tuesday, June 20, 2006
Saturday, June 17, 2006
Google Answers: Protect/encrypt java class (jar) files from theft
Google Answers: Protect/encrypt java class (jar) files from theft: "Obfuscator can not help protect your Java code from decompilers. Obfuscator can hide valuable names but not hide your logic or algorithms. There are a number of Java de-compiler products on the market that do this task such as Mocha, DJ Java Decompiler, Jad, WingDis, DejaVu, open source decompiler Jreverse Pro, Cavaj Java Decompiler, JCavaj Java Decompiler, Decafe Pro, SourceAgain ... etc. They produce readable source code even though your classes have been obfuscated. http://www.excelsior-usa.com/jetprotection.html Excelsior JET JVM offers a solution but actually it recompile your java source code and that is not Java program anymore. The only solution is to create a java secure class loader which does encrypting/ decrypting classes in the memory. We got the solution and is preparing patent it. The secure class loader already apply to SETECS products written in JAVA. It is proven as secure and efficient solution so far."
Friday, June 16, 2006
Wednesday, June 14, 2006
JavaNCSS - A Source Measurement Suite for Java
JavaNCSS - A Source Measurement Suite for Java: "Ever wondered how many lines of code or how many classes there are in the Sun JDK? Curious about the size of your own projects - or do you want to keep track of your work-progress. That's what JavaNCSS is for.
JavaNCSS is a simple command line utility which measures two standard source code metrics for the Java programming language. The metrics are collected globally, for each class and/or for each function.
Here is an example about what JavaNCSS prints out for the Sun JDK 1.1.5 java.* source tree (update: JDK 1.5 api source tree consists of 569'830 ncss).
JavaNCSS can optionally present its output with a little graphical user interface. To interactively select Java source files for counting, Jacob (a Java class browser and project manager) can be used for this purpose.
JavaNCSS can also be used out of an Ant build.xml script as it comes bundled with an Ant task written by Steve Jernigan. The JavaNCSS Ant Task is documented on a separate page.
You can always find the newest version of this page at: http://www.kclee.de/clemens/java/javancss/"
JavaNCSS is a simple command line utility which measures two standard source code metrics for the Java programming language. The metrics are collected globally, for each class and/or for each function.
Here is an example about what JavaNCSS prints out for the Sun JDK 1.1.5 java.* source tree (update: JDK 1.5 api source tree consists of 569'830 ncss).
JavaNCSS can optionally present its output with a little graphical user interface. To interactively select Java source files for counting, Jacob (a Java class browser and project manager) can be used for this purpose.
JavaNCSS can also be used out of an Ant build.xml script as it comes bundled with an Ant task written by Steve Jernigan. The JavaNCSS Ant Task is documented on a separate page.
You can always find the newest version of this page at: http://www.kclee.de/clemens/java/javancss/"
Monday, June 05, 2006
Saturday, June 03, 2006
Checkstyle - Checkstyle 4.1
Checkstyle - Checkstyle 4.1: "Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. It automates the process of checking Java code to spare humans of this boring (but important) task. This makes it ideal for projects that want to enforce a coding standard.
Checkstyle is highly configurable and can be made to support almost any coding standard. An example configuration file is supplied supporting the Sun Code Conventions. As well, other sample configuration files are supplied for other well known conventions.
A good example of a report that can be produced using Checkstyle and Maven can be seen here."
Checkstyle is highly configurable and can be made to support almost any coding standard. An example configuration file is supplied supporting the Sun Code Conventions. As well, other sample configuration files are supplied for other well known conventions.
A good example of a report that can be produced using Checkstyle and Maven can be seen here."
JGAP: Java Genetic Algorithms Package
JGAP: Java Genetic Algorithms Package
JGAP (pronounced "jay-gap") is a genetic algorithms component written in the form of a Java framework. It provides basic genetic mechanisms that can be easily used to apply evolutionary principles to problem solutions. The next version will introduce Genetic Programming!
JGAP has been written to be very easy to use "out of the box," while also designed to be highly modular so that more adventurous users can easily plug-in custom genetic operators and other sub-components.
JGAP (pronounced "jay-gap") is a genetic algorithms component written in the form of a Java framework. It provides basic genetic mechanisms that can be easily used to apply evolutionary principles to problem solutions. The next version will introduce Genetic Programming!
JGAP has been written to be very easy to use "out of the box," while also designed to be highly modular so that more adventurous users can easily plug-in custom genetic operators and other sub-components.
Thursday, June 01, 2006
Home Page of Jad - the fast Java decompiler
Home Page of Jad - the fast Java decompiler
Die Homepage des Java Decompilers is offensichtlich von Tripod hierher umgezogen.
Die Homepage des Java Decompilers is offensichtlich von Tripod hierher umgezogen.
Wednesday, May 31, 2006
DBCopy Plugin Home Page
DBCopy Plugin Home Page: "DB Copy Plugin is a plugin for the SQuirreL SQL Client (1.2beta6 and 2.0 RC1 )
that allows copying database objects (schema def and data) from one session window to another.
The source and destination sessions can be different database vendors (Hibernate is
used internally for data type translation)."
that allows copying database objects (schema def and data) from one session window to another.
The source and destination sessions can be different database vendors (Hibernate is
used internally for data type translation)."
HelpSetMaker - Ein Programm zur Erstellung von Online-Hilfe-Systemen
HelpSetMaker - Ein Programm zur Erstellung von Online-Hilfe-Systemen: "HelpSetMaker - Ein Programm zur Erstellung von Online-Hilfe-Systemen
Hinweis: HelpSetMaker richtet sich grunds�tzlich an Muttersprachler verschiedener Sprachen. Das Programm ist momentan mit deutscher und englischer Benutzeroberfl�che ausgestattet. Die Online-Hilfe und die Seiten bei SourceForge sind aber nur in Englisch verf�gbar."
Hinweis: HelpSetMaker richtet sich grunds�tzlich an Muttersprachler verschiedener Sprachen. Das Programm ist momentan mit deutscher und englischer Benutzeroberfl�che ausgestattet. Die Online-Hilfe und die Seiten bei SourceForge sind aber nur in Englisch verf�gbar."
JHelpDev
JHelpDev
This is an overview of all features that have been implemented in the respective current version of JHelpDev. The requested features section provides an outlook for the future.
Implemented
* creates the map file from existing HTML files in a directory including targets
* convenient TOC editor with a tree view, image support
* smart automatic TOC generation searches HTML files for "title-like" entries and preserves existing entries
* powerful index editor allowing for quickly jumping to the location in the helpset
* two synchronized views for convenient index creation
* HS Editor for the views and labels of the JHelpNavigator
* list of recently visited projects, starts browsing in last directory
* support of subhelpsets
* easy to use preview with the original helpviewer
* one click creation of search database
* a context-sensitive helpsystem created with JHelpDev
* configuration changes are stored in an XML format
This is an overview of all features that have been implemented in the respective current version of JHelpDev. The requested features section provides an outlook for the future.
Implemented
* creates the map file from existing HTML files in a directory including targets
* convenient TOC editor with a tree view, image support
* smart automatic TOC generation searches HTML files for "title-like" entries and preserves existing entries
* powerful index editor allowing for quickly jumping to the location in the helpset
* two synchronized views for convenient index creation
* HS Editor for the views and labels of the JHelpNavigator
* list of recently visited projects, starts browsing in last directory
* support of subhelpsets
* easy to use preview with the original helpviewer
* one click creation of search database
* a context-sensitive helpsystem created with JHelpDev
* configuration changes are stored in an XML format
Monday, May 29, 2006
Monday, May 22, 2006
XMLmind: Aptconvert
XMLmind: Aptconvert: "Aptconvert is a command-line tool that can be used to convert the APT format to HTML, XHTML, PDF, PostScript, (MS Word loadable) RTF, DocBook SGML and DocBook XML."
Terracotta - Enterprise-class clustering for Java
Terracotta - Enterprise-class clustering for Java: "Clustering the JVM, Not the Application
Terracotta DSO is a runtime solution for clustering JVMs, instead of the application. By extending the Java heap, Terracotta DSO creates one “clustered” JVM that shares object state and behavior. Tuning the clustering behavior can now be done at runtime without code changes. Developers can focus on business logic, not infrastructure."
Terracotta DSO is a runtime solution for clustering JVMs, instead of the application. By extending the Java heap, Terracotta DSO creates one “clustered” JVM that shares object state and behavior. Tuning the clustering behavior can now be done at runtime without code changes. Developers can focus on business logic, not infrastructure."
Marthon User Guide
Marthon User Guide: "Marathon is a general purpose tool for both running and authoring acceptance tests geared at the applications developed using Java and Swing. Included with marathon is a rich suite of components to help you interact with your application at the User Interface Level (GUI).
Marathon tests are scripted using Jython, a 100% pure java implementation of the programming language Python -- the emphasis being on a extremely simple, highly readable syntax that customers, analysts, testers and developers can all be comfortable with. But don't let the simplicity fool you. Python is a mature, full-featured programming language, so testers and developers don't need to sacrafice anything in terms of the power and creativity with which they can express their tests.
To aid with the regression testing of existing applications, Marathon comes bundled with a recorder to capture events as you use and interact with your application. These events are then converted into a valid Marathon test which can subsequently be played back."
Marathon tests are scripted using Jython, a 100% pure java implementation of the programming language Python -- the emphasis being on a extremely simple, highly readable syntax that customers, analysts, testers and developers can all be comfortable with. But don't let the simplicity fool you. Python is a mature, full-featured programming language, so testers and developers don't need to sacrafice anything in terms of the power and creativity with which they can express their tests.
To aid with the regression testing of existing applications, Marathon comes bundled with a recorder to capture events as you use and interact with your application. These events are then converted into a valid Marathon test which can subsequently be played back."
Thursday, May 18, 2006
jGuru: JaVaCC Grammar modification required.
jGuru: JaVaCC Grammar modification required.
JaVaCC Grammar modification required.
Topic: JavaLanguage
Vijendra Singh, Mar 14, 2006
Hi, If someone has good command over writing .jj or.jjt files. I need some help in writing code. I need to incorporate in my sqlParser.jj and ultimately sqlParser.java files; so that they can read and parse :- "create view as select * from tablename" statement. This sqlParser.jj files are generating ASCII_char_stream instead Simple_char_stream, but i don't think it will create any problem. So just like it parsers create table...statement,delete,alster tables etc. It sholud also parse view without giving any error. I am giving this file with some modification i tried to do for views but grammar is mistaken please give me some useful way to solve this Thanks VijendraNew Page 1
/**
* Creation date: July 19th, 2000
* This is the JavaCC grammar definition file for the DDL dialect used by
* ZeroCode.
*/
// options {
// DEBUG_PARSER = true;
// }
PARSER_BEGIN(SqlParser)
package zerocode.sqlParser;
import com.sun.java.util.collections.*;
import java.io.*;
import java.util.Enumeration;
import zerocode.dbSupport.*;
import zerocode.core.*;
/**
* The SqlParser class encapsulates parsing of SQL DDL statements to enable
* zeroCode to construct the schema-related data structures. Most of its
* implementation is generated using the
* JavaCC
* application.
*/
public class SqlParser {
public interface ConstraintType {
public static final int UNIQUE = 1;
public static final int PRIMARY_KEY = 2;
}
public static void main (String args[]) throws Exception {
Schema dbSchema = buildSchema (new InputStreamReader (System.in));
System.out.println (dbSchema.toString());
}
public static synchronized Schema buildSchema (Reader stream)
throws ZcException {
_fkConstraints = new ArrayList();
_errorList = new Vector();
_dbSchema = new Schema ("ZeroCodeSchema");
if (_parser == null)
_parser = new SqlParser (stream);
else
_parser.ReInit (stream);
try {
_parser.ddlSequence ();
} catch (ParseException e) {
throw new ZcException
(ErrorCode.INVALID_SCHEMA, "SQL syntax error: " + e.getMessage());
}
_dbSchema.setConstraints (_fkConstraints);
if (_errorList.size() > 0)
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
"Schema errors:\n" + StringUtils.join (_errorList, "\n"));
return _dbSchema;
}
private static void addTable (DbTable table) {
_dbSchema.addTable (table);
}
private static void addSequence (String sequenceName) {
_dbSchema.addSequence (sequenceName);
}
private static int convertToken (String message)
throws ZcException {
try {
int val = Integer.parseInt (token.toString());
return val;
} catch (NumberFormatException e) {
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
message + "token '" + token.toString() + "' line " +
token.beginLine + " column " + token.beginColumn);
}
}
private static void setConstraint (DbTable table, String constraintName,
int constraintType,
StringSet columnNameSet) {
if (constraintType == ConstraintType.PRIMARY_KEY) {
int nCols = columnNameSet.size();
if (nCols > 1) {
// _errorList.add ("Table " + table.name() + ": must have " +
// "exactly one column as primary key.");
// We set the pri key anyway, to inhibit the subsequent
// "No primary key defined" error message.
table.setPrimaryKey (columnNameSet);
} else if (nCols <= 0) {
// _errorList.add ("Table " + table.name() + ": must have " +
// "a primary key.");
} else {
String colName = (String) columnNameSet.asArray()[0];
DbColumn col = table.columnWithName (colName);
if (col == null)
_errorList.add ("Table " + table.name() + ": Column '" +
colName + "', specified in primary key " +
"constraint, is not a declared column.");
else
table.setPrimaryKey (col.name());
}
} else {
// It should be a UNIQUE constraint
table.addUniqueConstraint
(new UniqueConstraint (constraintName, table, columnNameSet));
}
}
private static void addForeignKeyConstraint (String constraintName,
DbTable table,
StringSet columnNameSet,
String toTableName,
String toColName) {
if (columnNameSet.size() != 1) {
// We now silently ignore this problem -- MAS 1/7/2003
// _errorList.add ("Table " + table.name() + ": must have " +
// "exactly one column in foreign key.");
return;
}
String fkColName = columnNameSet.asArray()[0];
DbColumn fkCol = table.columnWithName (fkColName);
if (fkCol == null) {
_errorList.add ("Table " + table.name() +
": Cannot add foreign key constraint: no " +
"foreign key column named '" + fkColName + "'");
return;
}
DbTable toTable = _dbSchema.tableWithName (toTableName);
if (toTable == null) {
_errorList.add ("Table '" + toTableName + "' not found in schema.");
return;
}
DbColumn toColumn = toTable.columnWithName (toColName);
if (toColumn == null) {
_errorList.add ("Attempting to add foreign key from " +
table.name() + "(" +
columnNameSet.joinString(",") + ") to table '" +
toTableName + "': the latter has no column " +
"named '" + toColName + "'");
} else {
String constraintId = constraintName != null
? constraintName
: ("zcFkConstraint" + (++zcFkCount));
ForeignKeyConstraint constraint = new ForeignKeyConstraint
(constraintId, fkCol, toColumn, _fkConstraints.size());
_fkConstraints.add (constraint);
}
}
private static Schema _dbSchema;
private static Vector _errorList;
private static List _fkConstraints;
private static SqlParser _parser;
private static int zcFkCount = 0;
}
PARSER_END(SqlParser)
SKIP :
{
" "
|
"\t"
|
"\n"
|
"\r"
|
"--" : IN_LINE_COMMENT
|
"/*" : IN_COMMENT
}
SKIP:
{
"\n" : DEFAULT
}
MORE:
{
< ~[] >
}
SKIP:
{
"*/" : DEFAULT
}
MORE:
{
< ~[] >
}
TOKEN [IGNORE_CASE] :
{
< ADD: "add" >
| < ALL: "all" >
| < ALTER: "alter" >
| < AND: "and" >
| < ANY: "any" >
| < AS : "as" >
| < ASC: "asc" >
| < BY: "by" >
| < CACHE: "cache" >
| < CASCADE: "cascade" >
| < CHECK: "check" >
| < COLUMN: "column" >
| < COMMENT: "comment" >
| < CONSTRAINT: "constraint" >
| < CONSTRAINTS: "constraints" >
| < CREATE: "create" >
| < CYCLE: "cycle" >
| < DEFAULT_TOK: "default" >
| < DELETE: "delete" >
| < DESC: "desc" >
| < DROP: "drop" >
| < FOREIGN: "foreign" >
| < IDENTITY: "identity" >
| < IN: "in" >
| < INCREMENT: "increment" >
| < INDEX: "index" >
| < IS: "is" >
| < KEY: "key" >
| < MAXVALUE: "maxvalue" >
| < MINVALUE: "minvalue" >
| < NOCACHE: "nocache" >
| < NOCYCLE: "nocycle" >
| < NOMAXVALUE: "nomaxvalue" >
| < NOMINVALUE: "nominvalue" >
| < NOORDER: "noorder" >
| < NOT: "not" >
| < NULL: "null" >
| < ON: "on" >
| < OR: "or" >
| < ORDER: "order" >
| < PRIMARY: "primary" >
| < REFERENCES: "references" >
| < SELECT: "select" >
| < SEQUENCE: "sequence" >
| < SOME: "some" >
| < START: "start" >
| < TABLE: "table" >
| < UNIQUE : "unique" >
| < UPDATE : "update" >
| < VIEW : "view" >
| < WITH: "with" >
| < COMMA: "," >
| < DOT: "." >
| < IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z", "_", "0"-"9", "$", "#"])* >
| < LPAREN: "(" >
| < NUMBER: (["0"-"9"])+ >
| < RPAREN: ")" >
| < SEMICOLON: ";" >
| < SLASH: "/" >
| < STRING_LITERAL:
(
"'"
(~["'","\\","\n","\r"])*
"'"
)+
>
}
String allowedColumnName () :
{}
{
(
LOOKAHEAD(2)
< IDENTIFIER >
| < ANY >
| < AS >
| < ASC >
| < BY >
| < CACHE >
| < CASCADE >
| < CHECK >
| < COLUMN >
| < COMMENT >
| < CONSTRAINTS >
| < CREATE >
| < CYCLE >
| < DEFAULT_TOK >
| < DELETE >
| < DESC >
| < DROP >
| < FOREIGN >
| < IDENTITY >
| < IN >
| < INCREMENT >
| < INDEX >
| < IS >
| < KEY >
| < MAXVALUE >
| < MINVALUE >
| < NOCACHE >
| < NOCYCLE >
| < NOMAXVALUE >
| < NOMINVALUE >
| < NOORDER >
| < NOT >
| < NULL >
| < ON >
| < OR >
| < ORDER >
| < PRIMARY >
| < REFERENCES >
| < SELECT >
| < SEQUENCE >
| < SOME >
| < START >
| < TABLE >
| < UNIQUE >
| < UPDATE >
| < VIEW >
| < WITH >
) { return token.toString(); }
}
void ddlSequence () throws ZcException :
{
DbTable table;
String sequenceName;
}
{
(
(
comment()
|
(
(
table = tableDefinition () {
addTable (table);
}
|
indexDefinition ()
|
sequenceName = sequenceDefinition ()
{
addSequence (sequenceName);
}
)
)
|
(
(
view = viewDefinition ()
)
)
|
alterTable ()
|
dropTable()
)
(
|
)+
)+
}
void comment () :
{ }
{
(
(
JaVaCC Grammar modification required.
Topic: JavaLanguage
Vijendra Singh, Mar 14, 2006
Hi, If someone has good command over writing .jj or.jjt files. I need some help in writing code. I need to incorporate in my sqlParser.jj and ultimately sqlParser.java files; so that they can read and parse :- "create view as select * from tablename" statement. This sqlParser.jj files are generating ASCII_char_stream instead Simple_char_stream, but i don't think it will create any problem. So just like it parsers create table...statement,delete,alster tables etc. It sholud also parse view without giving any error. I am giving this file with some modification i tried to do for views but grammar is mistaken please give me some useful way to solve this Thanks Vijendra
/**
* Creation date: July 19th, 2000
* This is the JavaCC grammar definition file for the DDL dialect used by
* ZeroCode.
*/
// options {
// DEBUG_PARSER = true;
// }
PARSER_BEGIN(SqlParser)
package zerocode.sqlParser;
import com.sun.java.util.collections.*;
import java.io.*;
import java.util.Enumeration;
import zerocode.dbSupport.*;
import zerocode.core.*;
/**
* The SqlParser class encapsulates parsing of SQL DDL statements to enable
* zeroCode to construct the schema-related data structures. Most of its
* implementation is generated using the
* JavaCC
* application.
*/
public class SqlParser {
public interface ConstraintType {
public static final int UNIQUE = 1;
public static final int PRIMARY_KEY = 2;
}
public static void main (String args[]) throws Exception {
Schema dbSchema = buildSchema (new InputStreamReader (System.in));
System.out.println (dbSchema.toString());
}
public static synchronized Schema buildSchema (Reader stream)
throws ZcException {
_fkConstraints = new ArrayList();
_errorList = new Vector();
_dbSchema = new Schema ("ZeroCodeSchema");
if (_parser == null)
_parser = new SqlParser (stream);
else
_parser.ReInit (stream);
try {
_parser.ddlSequence ();
} catch (ParseException e) {
throw new ZcException
(ErrorCode.INVALID_SCHEMA, "SQL syntax error: " + e.getMessage());
}
_dbSchema.setConstraints (_fkConstraints);
if (_errorList.size() > 0)
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
"Schema errors:\n" + StringUtils.join (_errorList, "\n"));
return _dbSchema;
}
private static void addTable (DbTable table) {
_dbSchema.addTable (table);
}
private static void addSequence (String sequenceName) {
_dbSchema.addSequence (sequenceName);
}
private static int convertToken (String message)
throws ZcException {
try {
int val = Integer.parseInt (token.toString());
return val;
} catch (NumberFormatException e) {
throw new ZcException
(ErrorCode.INVALID_SCHEMA,
message + "token '" + token.toString() + "' line " +
token.beginLine + " column " + token.beginColumn);
}
}
private static void setConstraint (DbTable table, String constraintName,
int constraintType,
StringSet columnNameSet) {
if (constraintType == ConstraintType.PRIMARY_KEY) {
int nCols = columnNameSet.size();
if (nCols > 1) {
// _errorList.add ("Table " + table.name() + ": must have " +
// "exactly one column as primary key.");
// We set the pri key anyway, to inhibit the subsequent
// "No primary key defined" error message.
table.setPrimaryKey (columnNameSet);
} else if (nCols <= 0) {
// _errorList.add ("Table " + table.name() + ": must have " +
// "a primary key.");
} else {
String colName = (String) columnNameSet.asArray()[0];
DbColumn col = table.columnWithName (colName);
if (col == null)
_errorList.add ("Table " + table.name() + ": Column '" +
colName + "', specified in primary key " +
"constraint, is not a declared column.");
else
table.setPrimaryKey (col.name());
}
} else {
// It should be a UNIQUE constraint
table.addUniqueConstraint
(new UniqueConstraint (constraintName, table, columnNameSet));
}
}
private static void addForeignKeyConstraint (String constraintName,
DbTable table,
StringSet columnNameSet,
String toTableName,
String toColName) {
if (columnNameSet.size() != 1) {
// We now silently ignore this problem -- MAS 1/7/2003
// _errorList.add ("Table " + table.name() + ": must have " +
// "exactly one column in foreign key.");
return;
}
String fkColName = columnNameSet.asArray()[0];
DbColumn fkCol = table.columnWithName (fkColName);
if (fkCol == null) {
_errorList.add ("Table " + table.name() +
": Cannot add foreign key constraint: no " +
"foreign key column named '" + fkColName + "'");
return;
}
DbTable toTable = _dbSchema.tableWithName (toTableName);
if (toTable == null) {
_errorList.add ("Table '" + toTableName + "' not found in schema.");
return;
}
DbColumn toColumn = toTable.columnWithName (toColName);
if (toColumn == null) {
_errorList.add ("Attempting to add foreign key from " +
table.name() + "(" +
columnNameSet.joinString(",") + ") to table '" +
toTableName + "': the latter has no column " +
"named '" + toColName + "'");
} else {
String constraintId = constraintName != null
? constraintName
: ("zcFkConstraint" + (++zcFkCount));
ForeignKeyConstraint constraint = new ForeignKeyConstraint
(constraintId, fkCol, toColumn, _fkConstraints.size());
_fkConstraints.add (constraint);
}
}
private static Schema _dbSchema;
private static Vector _errorList;
private static List _fkConstraints;
private static SqlParser _parser;
private static int zcFkCount = 0;
}
PARSER_END(SqlParser)
SKIP :
{
" "
|
"\t"
|
"\n"
|
"\r"
|
"--" : IN_LINE_COMMENT
|
"/*" : IN_COMMENT
}
{
"\n" : DEFAULT
}
{
< ~[] >
}
{
"*/" : DEFAULT
}
{
< ~[] >
}
TOKEN [IGNORE_CASE] :
{
< ADD: "add" >
| < ALL: "all" >
| < ALTER: "alter" >
| < AND: "and" >
| < ANY: "any" >
| < AS : "as" >
| < ASC: "asc" >
| < BY: "by" >
| < CACHE: "cache" >
| < CASCADE: "cascade" >
| < CHECK: "check" >
| < COLUMN: "column" >
| < COMMENT: "comment" >
| < CONSTRAINT: "constraint" >
| < CONSTRAINTS: "constraints" >
| < CREATE: "create" >
| < CYCLE: "cycle" >
| < DEFAULT_TOK: "default" >
| < DELETE: "delete" >
| < DESC: "desc" >
| < DROP: "drop" >
| < FOREIGN: "foreign" >
| < IDENTITY: "identity" >
| < IN: "in" >
| < INCREMENT: "increment" >
| < INDEX: "index" >
| < IS: "is" >
| < KEY: "key" >
| < MAXVALUE: "maxvalue" >
| < MINVALUE: "minvalue" >
| < NOCACHE: "nocache" >
| < NOCYCLE: "nocycle" >
| < NOMAXVALUE: "nomaxvalue" >
| < NOMINVALUE: "nominvalue" >
| < NOORDER: "noorder" >
| < NOT: "not" >
| < NULL: "null" >
| < ON: "on" >
| < OR: "or" >
| < ORDER: "order" >
| < PRIMARY: "primary" >
| < REFERENCES: "references" >
| < SELECT: "select" >
| < SEQUENCE: "sequence" >
| < SOME: "some" >
| < START: "start" >
| < TABLE: "table" >
| < UNIQUE : "unique" >
| < UPDATE : "update" >
| < VIEW : "view" >
| < WITH: "with" >
| < COMMA: "," >
| < DOT: "." >
| < IDENTIFIER: ["a"-"z","A"-"Z", "_"] (["a"-"z", "_", "0"-"9", "$", "#"])* >
| < LPAREN: "(" >
| < NUMBER: (["0"-"9"])+ >
| < RPAREN: ")" >
| < SEMICOLON: ";" >
| < SLASH: "/" >
| < STRING_LITERAL:
(
"'"
(~["'","\\","\n","\r"])*
"'"
)+
>
}
String allowedColumnName () :
{}
{
(
LOOKAHEAD(2)
< IDENTIFIER >
| < ANY >
| < AS >
| < ASC >
| < BY >
| < CACHE >
| < CASCADE >
| < CHECK >
| < COLUMN >
| < COMMENT >
| < CONSTRAINTS >
| < CREATE >
| < CYCLE >
| < DEFAULT_TOK >
| < DELETE >
| < DESC >
| < DROP >
| < FOREIGN >
| < IDENTITY >
| < IN >
| < INCREMENT >
| < INDEX >
| < IS >
| < KEY >
| < MAXVALUE >
| < MINVALUE >
| < NOCACHE >
| < NOCYCLE >
| < NOMAXVALUE >
| < NOMINVALUE >
| < NOORDER >
| < NOT >
| < NULL >
| < ON >
| < OR >
| < ORDER >
| < PRIMARY >
| < REFERENCES >
| < SELECT >
| < SEQUENCE >
| < SOME >
| < START >
| < TABLE >
| < UNIQUE >
| < UPDATE >
| < VIEW >
| < WITH >
) { return token.toString(); }
}
void ddlSequence () throws ZcException :
{
DbTable table;
String sequenceName;
}
{
(
(
comment()
|
(
(
table = tableDefinition () {
addTable (table);
}
|
indexDefinition ()
|
sequenceName = sequenceDefinition ()
{
addSequence (sequenceName);
}
)
)
|
(
(
view = viewDefinition ()
)
)
|
alterTable ()
|
dropTable()
)
(
|
)+
)+
}
void comment () :
{ }
{
(
(