TABLE OF CONTENT

1. Acknowledgement............................................................................................................... 3 2. Abstract............................................................................................................................. .. 4 3. Problem analysis & definition [5] 3.1. Processing Environment............................................................................................... 5 3.1.1. Hardware and Software requirement............................................................... 5 3.1.2. Operating Environment................................................................................... 5 3.2. Development Schedule [ 6 - 13 ] 3.2.1. Overview......................................................................................................... 6 3.2.2. History............................................................................................................... 6 3.2.3. System development......................................................................................... 7 3.2.4. System development life cycle topics............................................................... 7 3.2.5. Work breakdown structure............................................... ............................... 10 3.2.6. Strength and weakness.................................................................................... 11 3.3. Programming Languages and Development tools [ 14 - 21 ] 3.3.1. JDK 1.6........................................................................................................... 14 3.3.2. Microsoft Access............................................................................................ 15 3.3.3. Split Database Architecture............................... ............................................ 21 4. Software requirement specification [ 22 ± 30 ] 4.1. The System feature........................................... ......................................................... 22 4.2. Sequence diagram...................................................................................................... 23 4.3. Activity diagram......................................................... ............................................... 24 4.4. State Chart diagram................................................................................................... 25 4.5. Class diagram............................................................................................................. 26 4.6. Use Case diagram.................................................................................... ................... 27 4.7. Deployment diagram................................................................................................. 28 4.8. Collaborative diagram............................................................................................ 28 4.9. Non-Functional requirement.................................................................................... 29 4.9.1. Performance requirement............................................................................. 29 4.9.2. Safety requirement........................................................................................ 29 4.9.3. Security requirement................................................................................... 29 4.10. Functional requirement.................................. ............................................................ 30 4.11. Software Quality Attributes..................................................................................... 30 5. Design [ 31 - 35 ] 5.1. System Environment.................................................................................................. 31 5.2. Use cases.................................................................... ............................................ .... 31 5.2.1. Add a marker and requirement........................................................................ 31 5.2.2. Search a Wikipedia article and requirement.................................................. 32 5.2.3. Geocode - Search a location from address...................................................... 33 5.2.4. Reverse Geocode ± Search address from location..........................................33 5.2.5. Find Weather of a place and requirement............................ ...........................34 5.2.6 Find path from source to destination..............................................................35

TABLE OF CONTENT
6. Documentation [ 36 - 80 ] 6.1. Coding........................................................................................................................ 36 6.2. Output of the modules................................................................................................ 75 7. Testing [ 81 - 84 ] 7.1. McCabe Cyclomatic Complexity............................................................................... 81 7.2. Add a new marker ,description & test cases.............................................................. 81 7.3. Latitude of location ,description & test cases............................................................ 82 7.4. Postal Code ,description & test cases......................................................................... 83 7.5. Boundary value analysis..................................................... ....................................... 84
8. Future Analysis [ 85 ] 8.1. Innovative and usefulness.............................................................................................. 85 8.2. As a mobile application.................................................................................................. 85 9. Reference [ 85 ]

2|Page

ACKNOWLEDGEMENT
It is a pleasure to acknowledge my debt to the many people involved, directly or indirectly, in the making of this software. First of all, we must thank to each one of the members of our group for it was our unity, strength and capability with led to the development of this mammoth project. Secondly we have benefitted enormously by the comments and review by our Project Guide ³Mr. Deepak Upreti´. Continuing thanking the teachers I must certainly not forget other lecturers, who not only gave their precious time to listen to our ideas but also guided us. And also my sincere thanks to Mr.K S Mehta, Head of Department (CSE).

THANK YOU Vivek Sonkar Shailendra Singh Sushil Kumar Varun Agrawal ( 0719210118 ) ( 0719210092 ) ( 0719210102 ) ( 0719210111 )

3|Page

AB

RAC
The MAPP NG APPL CAT ON i a deskt appli ati desi ed t run using maps

from OPENSTREETMAP server and allows users to search relevant Wikipedia article [geographic location], weather of a place, locate places [Geocoding and Reverse-Geocoding], find suitable paths and add markers. Database for a cit will be maintained and all standard map tools will be provided. The data will be held in an Oracle database on the JU T server. Map-App can work onl if the end user system can establish a connection to a tile map server (openstreetmaps in this case) also for user to be able to logon and store his data a co nnection with the database server is necessary. The main objective of the project is to provide the user to the map of the desired location for which he/she desires including the weather reports and the details from the Wikipedia also. The MAP-App retrieves maps from the openstreetmaps server and marker locations from the department server system. This system will be web-based, linking to tile map server and online services such as geonames for location and article search. An nternet connection is necessary to access the maps and other features of the application.

Fig: Diagrammatic representation of working of project

4|Page

PROCESSING ENVIRONMENT  Hardware Requirement y y y y y 64 MB Ram Modem (or LAN) for internet connection P II Processor or Higher 10 MB Disk Space GPA device (optional) for accessing current user location.PROBLEM ANALYSIS AND DEFINITION  Theme This Software Requirements Specification provides a complete description of all the functions and specifications of the MAPPING APPLICATION. L. The expected audience of this document is the faculty of CSE department.4 or above Server A server is a machine with following specification ±  Operating System . of Tech. G.6 Microsoft Access Net Beans Release Candidate 2 OPENSTREETMAP Server Operating System [ Windows NT / 2000 / XP / Vista / windows 7 ]  Operating Environment y y JDK 1.Oracle  Network .  Software Requirement y y y y y y JDK 1.Windows NT / 2000 / XP / Vista  Database .Lan 5|Page . Bajaj Inst.

reaches completion within time and cost estimates. including requirements. "spiral". and the models and methodologies that people use to develop these systems. a number of SDLC models have been created: "waterfall". "rapid prototyping". such as Waterfall. In software engineering the SDLC concept underpins many kinds of software development methodologies. The concept generally refers to computer or information systems. validation. "fountain". works effectively and efficiently in the current and planned Information Technology infrastructure. To manage this level of complexity. Any SDLC should result in a high quality system that meets or exceeds customer expectations. however. Computer systems are complex and often (especially with the recent rise of Service-Oriented Architecture) link multiple traditional systems potentially supplied by different software vendors. is the process of creating or altering systems. and is inexpensive to maintain and cost-effective to enhance. Sequential or big-design-upfront (BDUF) models.SYSTEM DEVELOPMENT LIFE CYCLE The Systems Development Life Cycle (SDLC). Agile methodologies. According to Taylor (2004) "the 6|Page . information systems and software engineering. focus on limited project scopes and expanding or improving products by multiple iterations. or Software Development Life Cycle in systems engineering. Iterative methodologies. SDLC is an umbrella term for all methodologies for the design. training. tend to focus on a form of development that is guided by project scope and adaptive iterations of feature development. "incremental". focus on complete and correct planning to guide large projects and risks to successful and predictable results Other models. In project management a project can be defined both with a project life cycle (PLC) and an SDLC. "build and fix". and user (stakeholder) ownership. Some agile and iterative proponents confuse the term SDLC with sequential or "more traditional" processes. such as Anamorphic Development. implementation. focus on light-weight processes which allow for rapid changes along the development cycle. such as Rational Unified Process and Dynamic Systems Development Method. during which slightly different activities occur. such as XP and Scrum. and release of software. These methodologies form the framework for planning and controlling the creation of an information system the software development process OVERVIEW Systems Development Life Cycle (SDLC) is a process used by a systems analyst to develop an information system. and "synchronize and stabilize" SDLC models can be described along a spectrum of agile to iterative to sequential.

H STORY The systems development lifecycle (SDLC) is a type of methodology used to describe the process for building information systems. but many different waterfall methodologies give the steps different names and the number of steps seems to vary between four and seven. while the systems development life cycle focuses on reali ing the product requirements". Fig : Phases in Software Development Life Cycle 7|Page . according to Elliott (2004). According to Elliott. structured and methodical way. SYSTEMS DEVELOPMENT PHASES A Systems Development Life Cycle (SDLC) adheres to important phases that are essential for developers.project life cycle encompasses all the activities of the project. and implementation. the oldest of which ² originally regarded as "the Systems Development Life Cycle" ² is the waterfall model: a sequence of stages in which the output of each stage becomes the input for the next. "the traditional life cycle approaches to systems development have been increasingly replaced with alternative approaches and framew orks. These stages generally follow the same basic steps. and are explained in the section below. the systems development life cycle was originated in the 1960s to develop large scale functional business systems in an age of large scale business conglomerates. such as the Structured Systems Analysis and Design Method (SSADM) produced for the UK government Office of Government Commerce in the 1980s. which attempted to overcome some of the inherent deficiencies of the traditional SDLC". activities revolved around heavy data Several systems development frameworks have been partly based on SDLC. There is no one correct Systems Development Life Cycle model. design. analysis. Strachan & Radford (2004). intended to develop information systems in a very deliberate. reiterating each stage of thelife cycle. Ever since. nformation systems processing and number crunching routines". such as planning. Several Systems Development Life Cycle Models exist.

a set of one or more design elements will be produced as a result of interviews. Not every project will require that the phases be sequentially executed. However. This phase is also called as analysis phase. For each requirement. pseudo code. The tasks and work products for each phase are described in subsequent chapters. workshops. Design elements describe the desired software features in detail. The tenth phase occurs when the system is disposed of and the task performed is either eliminated or transferred to other systems. This stage is intermingled 8|Page . and technical. analyzing project goals. The feasibility study is sometimes used to present the project to upper management in an attempt to gain funding.The SDLC can be divided into ten phases during which defined IT work products are created or modified. business rules. Furthermore. it is also used as a reference to keep the project on track and to evaluate the progress of the MIS team. business process diagrams. and/or prototype efforts.  Initiation/planning To generate a high-level view of the intended project and determine the goals of the project. process diagrams and other documentation. and generally include functional hierarchy diagrams. Depending upon the size and complexity of the project. tables of business rules. The design stage takes as its initial input the requirements identified in the approved requirements document. Unit testing and module testing are done in this stage by the developers. including screen layouts.  Design In systems design functions and operations are described in detail. Projects are typically evaluated in three areas of feasibility: economical. This step involves "breaking down" the system in different pieces to analyze the situation. and a complete entity-relationship diagram with a full data dictionary.  Requirements gathering and analysis The goal of systems analysis is to determine where the problem is in an attempt to fix the system. The output of this stage will describe the new system as a collection of modules or subsystems. phases may be combined or may overlap. screen layout diagrams. the phases are interdependent. These design elements are intended to describe the software in sufficient detail that skilled programmers may develop the software with minimal additional input. "breaking down" what needs to be created and attempting to engage users so that definite requirements can be defined (Decomposition computer science). The MIS is also a complement of those phases. operational or organizational. Requirements Gathering sometimes requires individuals/teams from client as well as service provider sides to get detailed and accurate requirements.  Build or coding Modular and subsystem programming code will be accomplished during this stage.

Unit. which will require system updates.with the next in that individual modules will need testing before integration to the main project. Unit testing System testing Integration testing Black box testing White box testing Regression testing Automation testing User acceptance testing Performance testing Operations and maintenance The deployment of the system includes changes and enhancements before the decommissioning or sunset of the system. new changes will be implemented.  Testing The code is tested at various levels in software testing. Iteration is not generally part of the waterfall model. Below are the following types of testing:            Data set testing. Maintaining the system is an important aspect of SDLC. This is a grey area as many different opinions exist as to what the stages of testing are and how much if any iteration occurs. but usually some occur at this stage. system and user acceptance testing are often performed. 9|Page . As key personnel change positions in the organization.

and a summary of related control objectives for effective management. Control objectives help to provide a clear statement of the desired result or p urpose and should be used throughout the entire SDLC process.SYSTEMS DEVELOPMENT L FE CYCLE TOP CS Management and control SDLC Phases Related to Management Controls. The WBS form is mostly left to the project at manager to establish in a way that best describes the project work. The following diagram describes three key areas that will be addressed in the WBS in a manner established by the project manager. The WBS and all programmatic material should be kept in the ³Project Description´ section of the project notebook. Control objectives can be grouped into major categories (Domains). To manage and control any SDLC initiative. and relate to the SDLC phases as shown in the figure. There are some key areas that must be defined in the WBS as part of the SDLC policy. t is critical for the project manager to establish and monitor control objectives during each SDLC phase while executing projects. Each of the SDLC phase objectives are described in this section with key deliverables. a description of recommended tasks. 10 | P a g e . The Systems Development Life Cycle (SDLC) phases serve as a programmatic guide to project activity and provide a flexible but consistent way to conduct projects to a depth matching the scope of the project. each project will be required to establish some degree of a Work Breakdown Structure (WBS) to capture and schedule the work necessary to complete the project.

n addition. or analysis). Product Baseline: established after the detail design and development phase.     Functional Baseline: established after the conceptual design phase. decision. either internal or external to the project. document. Any part o the project f needing support from contractors should have aStatement of work (SOW) written to include the appropriate tasks from the SDLC phases.Work breakdown structure organization Work Breakdown Structure. The middle section of the WBS is based on the seven Systems Development Life Cycle (SDLC) phases as a guide for WBS task development. systems engineering) and may require close coordination with other tasks. Each task must have a measurable output (e. Baselines in the SDL Baselines are an important part of the Systems Development Life Cycle (SDLC).g.g. Allocated Baseline: established after the preliminary design phase. The development of a SOW does not occur during a specific phase of SDLC but is developed to include the workfrom the SDLC process that may be conducted by external resources such as contractors. software engineering. Complementary to SDLC Complementary Software development methods to Systems Development Life Cycle (SDLC) are: 11 | P a g e . These baselines are established after four of the five phases of the SDLC and are critical to the iterative nature of the model. The WBS elements should consist of milestones and ³tasks´ as opposed to ³activities´ and have a definitive period (usually two weeks or more). A WBS task may rely on one or more activities (e. Each baseline is considered as a milestone in the SDLC. the upper section should provide an overview of the full scope and timeline of the project and will be part of the initial project description effort leading to project approval. The upper section of the Work Breakdown Structure (WBS) should identify the major phases and milestones of the project in a summary fashion. Updated Product Baseline: established after the production construction phase.

Open Source Development End-user development Object Oriented Programming Comparison of Methodologies (Post. which lends itself more to a structured environment. Some will argue that the SDLC no longer applies to models like Agile computing. Instead of viewing SDLC from 12 | P a g e . & Anderson 2006) SDLC Control Time Frame Users MIS staff Formal Long Many Many RAD MIS Short Few Few Open Source Weak Objects JAD Prototyping User End User User Short Standards Joint Medium Any Few Varies Medium Short Few Few DSS One or Two One One or Two None DSS DSS Crucial None Hundreds Split Both Both Transaction/DSS Transaction Both Interface Documentation and training Integrity security Reusability and Minimal Vital Minimal Weak Limited Internal Windows Crucial Crucial In Objects In Objects Vital Limited Weak Vital Limited Vital Some Unknown Limited Weak Limited Weak Weak Maybe None STRENGTHS AND WEAKNESSES Few people in the modern computing world would use a strict waterfall model for their Systems Development Life Cycle (SDLC) as many modern methodologies have superseded this thinking.       Software Prototyping Joint Applications Design (JAD) Rapid Application Development (RAD) Extreme Programming (XP). The disadvantages to using the SDLC methodology is when there is need for iterative development or (i. extension of earlier work in Prototyping and RAD.e. web development or e-commerce) where stakeholders need to review on a regular basis the software being designed. but it is still a term widely in use in Technology circles. The SDLC practice has advantages in traditional models of software development.

The advantages of RAD are speed. At one time the model was beneficial mostly to the world of automating activities that were assigned to clerks and accountants. Rigidity. it is far more important to take the best practices from the SDLC model and apply it to whatever may be most appropriate for the software being designed. Development and design standards. Detailed steps. Weaknesses Increased development time. and active user involvement in the development process. Evaluate costs and completion targets. desk technicians/administrators or information technology Hard to estimate costs. which combines prototyping. the world of technological evolution is demanding that systems have a greater functionality that would assist help specialists/analysts. Documentation. Well defined user input. A comparison of the strengths and weaknesses of SDLC: Strength and Weaknesses of SDLC Strengths Control. Tolerates changes in MIS staffing. Monitor Large projects. reduced development cost. Joint Application Development and implementation of CASE tools.a strength or weakness perspective. It should not be assumed that just because the waterfall model is the oldest original SDLC model that it is the most efficient system. 13 | P a g e . project overruns. User input is sometimes limited. Systems must be defined up front. However. An alternative to the SDLC is Rapid Application Development. Increased development cost. Ease of maintenance.

Since the introduction of Java. jre. including:  Java the loader for Java applications. which automatically generates documentation also helps manage JAR files. which packages related class libraries into a single JAR file. Jar the archiver.PROGRAMMING LANGUAGE AND DEVELOPMENT TOOLS  JDK The Java Development Kit (JDK) is a Sun Microsystems product aimed at Java developers. used to write native methods Javaws the Java Web Start launcher for JNLP applications Extcheck a utility which can detect JAR-file conflicts. Sun contributed the source code to the Open JDK.   Javac the compiler. This happened in large part on 8 May 2007. no longer comes with Sun JDK. Apt the annotation-processing tool Jhat (experimental) Java heap analysis tool Jstack (experimental) utility which prints Java stack traces of Java threads Jstat (experimental) Java Virtual Machine statistics monitoring tool Jstatd (experimental) Jstat daemon Jinfo (experimental) this utility gets configuration information from a running Java process or crash dump. Sun announced that it would be released under the GNU General Public License (GPL). On 17 November 2006. 14 | P a g e . which converts source code into Java bytecode. This tool the documentation generator. which displays process information for current Java processes   Javap the class file disassembler Appletviewer browser. The old deployment launcher. Now a single launcher is used for both development and deployment.  Javadoc from source code comments   Jdb the debugger Jps the process status tool. it has been by far the most widely used Java SDK. JDK contents The JDK has as its primary components a selection of programming tools. thus making it free software. this tool can be used to run and debug Java applets without a web          Javah the C header and stub generator. This tool is an interpreter and can interpret the class files generated by the javac compiler.

the reliability of Access databases has been improved and it supports both more data and a larger number of users. usually called a private runtime. 8 MB of available hard disk space required. Copies of the JDK also include a wide selection of example programs demonstrating the use of almost all portions of the Java API. which can determine policy for a visual tool integrating several commandline JDK tools and lightweight Java runtime.0 on 13 November 1992. Microsoft specified the minimum hardware requirements for Access v2. Jrunscript Java command-line script shell. and the Getting Started manual warns about a number of circumstances where obsolete device drivers or incorrect configurations can cause data loss. Policytool VisualVM the policy creation and management tool.44 MB diskettes. 15 | P a g e . With the phasing out of Windows 95.1 release in May 1993 to improve compatibility with other Microsoft products and include the Access Basic programming language. The JDK also comes with a complete Java Runtime Environment. such as the internationalization libraries and the IDL libraries. 6 MB RAM recommended. The manual shows a 1993 copyright date. improved network reliability.1 with 4 MB of RAM required. 98 and ME. The product shipped on seven 1. For example. file sizes over 10 MB proved problematic (note that most hard disks held less than 500 MB at the time this was in wide use). Jmap (experimental) This utility outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process or core dump. specifying which permissions are available for code from various sources    performance and memory profiling capabilities   Wsimport generates portable JAX-WS artefacts for invoking a web service. the software worked well with relatively small databases but testing showed that some circumstances caused data corruption. and an Access 1. and Microsoft having released 8 service packs for the JetDatabase Engine. 14 MB hard disk space recommended.0 as: Microsoft Windows v3. Idlj the IDL-to-Java compiler. Originally. MICROSOFT ACCESS History Microsoft released Access version 1. as well as additional libraries only useful to developers. It consists of a Java Virtual Machine and all of the class libraries present in the production environment. This utility generates Java bindings from a given IDL file.

Microsoft has released new versions of Microsoft Access with each release of Microsoft Office. a new database format was introd uced: ACCDB. 7. The underlying Jet database. In Access 2007. which is not backward compatible with earlier versions of Access. Since then.0. 2002. which contains these objects. all newer versions of Access support the Access 2000 format. 2. Microsoft Access is very popular among non-programmers who can create visually pleasing and 16 | P a g e . These new field types are essentially recordsets in fields and allow the storage of multiple values in one field.0 (a. forms to display and enter data.k.0).5). At the time of this writing. Microsoft Access quickly became the dominant database for Windows effectively eliminating the competition which failed to transition from the MS-DOS world. the forms engine was called Ruby. 2000. indices. Access 2000 (version 9. This proved a failure and was dropped. Formats include Access 1.1. Microsoft Access 7. Simple tasks can be automated through macros with point-and-click options. the desktop database market was dominated by Borland with their Paradox and dBase programs. andFoxPro.With Office 95.0. The ACCDB supports complex data types such as multivalue and attachment fields. meant to compete with ProComm and other programs. and Access 2007 (version 12. Access was also the name of a communications program from Microsoft. New features were added to the Access 2002 format which can be used by Access 2002. and reports for printing. 1. Access tables support a variety of standard field types. Access 2003 (version 11. however. This includes Access 97 (version 8. a project called Thunder. these were merged together again after VBA.0). The two projects were developed separately as the underlying forms engines were incompatible with each other. With the purchase of FoxPro and incorporating its Rushmore query optimization routines into Access. Microsoft Access was the first mass market database program for Windows. 97. 2007. Prior to the introduction of Access. and 2007. Access 2002 (version 10. Access also includes a query interface. and referential integrity. Access's initial codename was Cirrus. 2003. is multiuser-aware and handles record-locking and referential integrity including cascading updates and deletes.0). joining Microsoft Excel.0). This was before Visual Basic . Word. The native Access database format (the Jet MDB Database) has also evolved over the years. Microsoft reused the name for its database software.Bill Gates saw the prototypes and decided that the BASIC language component should be co-developed as a separate expandable application. and 2010. Microsoft Access is used to create simple database solutions. Years later. The most significant transition was from the Access 97 to the Access 2000 format.a "Access 95") became part of the Microsoft Office Professional Suite. and PowerPoint and transitioning from Access Basic to Visual Basic for Applications (VBA).0.

issues.0 (VB6) and used throughout the Microsoft Office programs such as Excel. level of use.NET. Microsoft Access is designed to scale to support more data and users by linking to multiple Access databases or using a back-end database like Microsoft SQL Server. assets. the tasks being performed. The Microsoft Jet Database Engine. Outlook and PowerPoint. events. error trapping. queries. and multi-user support. It is also easy to place a database on a network and have multiple users share and update data without overwriting each other¶s work. Most VB6 code including the use of Windows API calls can be used in VBA. This is appropriate for workgroup and department solutions where the total number of users number a few hundred. The data (i. and macros. User interface features of Access. Generally accepted limits are solutions with 1 GB or less of data (Access supports up to 2 GB) and 50 or fewer simultaneous users. and tasks.. Access 2010 will allow forms and reports to be published to web sites using what is called "access web services" that runs on SharePoint software. such as forms and reports. data validation. projects. the amount of data and users can scale to enterprise-level solutions. Data is locked at the record level which is significantly different from Excel which locks the entire spreadsheet.relatively advanced solutions on their own. These options are available upon starting Access and allow users to quickly use and enhance a database with pre-defined tables. Word. Microsoft Access' role in web development prior to version 2010 is limited. The number of simultaneous users that can be supported depends on the amount of data.e. reports. Microsoft Access also offers the ability for programmers to create solutions using the programming language Visual Basic for Applications (VBA). core to Access. Applications that simply view data or have simple data entry can support considerably more users. forms. With the latter design. These web based forms and reports 17 | P a g e . tables and queries) can be accessed by web-based applications developed in ASP. Power users and developers can extend basic enduser solutions to a professional solution with advanced automation. which is similar to Visual Basic 6. only work in Windows. Many ISPs offer Microsoft Access as a data storage option. Database solutions created entirely in Microsoft Access are well suited for individual and workgroup use across a network. Popular templates include tracking contacts. Microsoft offers a wide range of template databases within the program and for download from their website. PHP. or Java. Applications that run complex queries or analysis across large datasets would naturally require greater bandwidth and memory. can be accessed through technologies such as ODBC or OLE DB. Templates do not include VBA code. and application design.

It also has the ability to link to data in its existing location and use it for viewing. for example. queries. querying. who can run it in disconnected environments. Microsoft offers a runtime version of Microsoft Access 2007 for download. and integrate source code control with Microsoft Visual SourceSafe. This makes it very convenient to distribute the entire application to another user. SQL Server. Thus. Microsoft also offers developer extensions for download to help distribute Access applications. The original concept of Access was for end users to be able to ³access´ data from any source. This allows people to create Access solutions and distribute it for use by non-Microsoft Access owners (similar to the way DLLs or EXEs are distributed). Access is often used by people downloading data from enterprise level databases for manipulation. This frees up the professional developers to focus on more complex portions of the application. dBase. FoxPro. Microsoft Access is easy enough for end users to create their own queries. Advanced users can use VBA to write rich solutions with advanced data manipulation and user control. etc. forms and reports. Unlike the regular version of Access. the resulting application can be used by running Firefox on Ubuntu Linux. ODBC. editing. In enterprise environments. analysis. create database templates. This allows the existing data to change and the Access platform to always use the latest data. Users can create tables. The resulting web forms and reports when run in the browser don't require any ActiveX or add-ins like Silver light. and reporting locally. the runtime version allows users to use the Access application but they cannot use its design surfaces. laying out fields and groupings. and reports.run in any standard browser. One of the benefits of Access from a programmer's perspective is its relative compatibility with SQL (structured query language) ² queries can be viewed graphically or edited as SQL 18 | P a g e . setting formats. There is also the Jet Database format (MDB or ACCDB in Access 2007) which can contain the application and data in one file. This is often used in environments where end-user modifications are discouraged or the application's code should be kept private. A compiled MDE or ACCDE version of an Access database can be created to prevent users from getting to the design surfaces to modify module code. and connect them together with macros. Oracle. Microsoft Access is particularly appropriate for meeting enduser database needs and for rapid application development. forms. Other uses include: the import and export of data to many formats including Outlook ASCII. and reporting. It can perform heterogeneous join between data sets stored across different platforms. Paradox. etc. forms and reports.

a graphical user interface that allows users to create queries without knowledge of the SQL programming language. This support started with MSDE (Microsoft SQL Server Desktop Engine). When developing Reports that are linked to Queries placing or moving items in the design view of the Report. queries. and modules are stored in the Access Jet database as a single file. In the Query Designer.NET through DAO or ADO. Access runs the linked query in the background on any placement or movement of an item in that Report. forms. The desktop editions of Microsoft SQL Server can be used with Access as an alternative to the Jet Database Engine.statements. users can "show" the data sources of the query (which can be tables or queries) and select the fields they want returned by clicking and dragging them into the grid. These queries and Access tables can be referenced from other programs like VB6 and . Microsoft Access offers parameterized queries. The Pass-Through queries are written using the SQL syntax supported by the external data source. From Microsoft Access. Access 2010 does now include table-level triggers and stored procedures built into the ACE data engine. and continues with the SQL Server Express versions of SQL Server 2005 and 2008. a scaled down version of Microsoft SQL Server 2000. Any Access table. queries. and SQL statements can be used directly in Macros and VBA Modules to manipulate Access tables. Forms. Access allows users to view and manipulate the SQL code if desired. Unlike client±server relational database management systems (RDBMS). can be used in a query. reports and Macros can now be developed specifically for web base application in Access 2010. Integration with Microsoft SharePoint 2010 is also highly improved. Microsoft Access does not implement database triggers. Access also supports the creation of Pass-Through queries. This enables users to interact with data stored outside the Access program without using linked Tables. Users can mix and use both VBA and "Macros" for programming forms and logic and offers object-oriented possibilities. Microsoft Access is a file server-based database. Joins can be created by clicking and dragging fields in tables to fields in other tables. VBA can reference parameterized stored procedures via ADO. Tables. For query development. reports. or transaction logging. Access offers a Query Designer. All database tables. VBA can also be included in queries. stored procedures. macros. Thus a Client-server database system is not a requirement for using stored procedures or table triggers with Access 2010. If the Report is linked to a Query that takes a long time 19 | P a g e . including linked tables from different data sources. These are queries that can be linked to external data sources through the use of ODBC connections on the local machine.

as in other products of the Microsoft Office suite. and ActiveX Data Objects ActiveX Data Objects (ADO). ADO is required. In the database container or navigation pane of Access 2007. It is particularly helpful in VBA where references to object names may not indicate its data type (e. it is a programming convention. The programming language available in Access is.g.Since Access 97. To manipulate data in tables and queries in VBA. Microsoft Access is most often used for individual and workgroup projects (the Access 97 speed characterization was done for 32 users). performance depends on the database design and tasks. tbl for tables. two database access libraries of COM components are provided: the Data Access Objects (DAO). Disk intensive work such as complex searching and querying are the most time consuming. previewing and printing reports. opening and closing forms. Macros however. etc. which is nearly identical to Visual Basic 6. Access 2007 also introduces embedded macros that are essentially properties of an object's event. Microsoft Visual Basic for Applications. Non-programmers can use the macro feature to automate simple tasks through a series of drop down selections. Many Access developers use the Leszynski naming convention. For ADPs and the direct manipulation of SQL Server data. macros are significantly enhanced with the inclusion of error handling and temporary variable support. importing or exporting data. Macros support basic logic (IF conditions) and the ability to call other macros. DAO is most appropriate for managing data in Access/Jet databases. VBA code can be stored in modules and code behind forms and reports. 20 | P a g e . and the only way to manipulate the complex field types in ACCDB tables. though this is not universal. and with Access 2003 and 2007. Most professional Access developers use the VBA programming language for a richer and more powerful development environment. Beside DAO and ADO. Modules can also be classes. developers can also use OLE DB and ODBC for developing native C/C++ programs for Access. Of course.to return records this forces you to wait until the query has run before you can add/edit or move the next item in the Report (this feature cannot be turned off). Databases less than 1 GB in size (which can now fit entirely in RAM) and 50 simultaneous users are well within the capabilities of Microsoft Access. Macros allow users to easily chain commands together such as running queries. which is included in Access and Windows and evolved to ACE in Microsoft Access 2007 for the ACCDE database format. This eliminates the need to store macros as individual objects. qry for queries).0 (VB6). not a DBMSenforced rule. the system automatically categorizes each object by type. In Access 2007. Microsoft Access and hardware have evolved significantly. are limited in their functionality by a lack of programming loops and advanced coding logic. Macros can also contain sub-macros which are similar to subroutines.

to facilitate this architecture. This is not an economical setup across slow networks. SQL backend should be considered in these circumstances. 21 | P a g e . and modules). as this will result in excessive lag to database users. This reduces network traffic since the application is not retrieved for each use. This is less of an issue now with broadband connections. then Microsoft Terminal Services is an effective solution. Performance can also be enhanced if a continuous connection is maintained to the back end database throughout the session rather than opening and closing it for each table access. SPLIT DATABASE ARCHITECTURE Microsoft Access applications can adopt split-database architecture. processing speed may be substantially better when there is only a single user or if the data is not changing. Microsoft Access has two built-in utilities. In the past. and allows the front end database to contain tables with data that is private to each user for storing settings or temporary data. This split database design also allows development of the application independent of the data. When a new version is ready. so the development environment either has to have the same path as the production environment or a "dynamiclinker" routine can be written in VBA. Access databases linked to SQL Server or Access Data Projects work great over VPN and WAN.As data from a Microsoft Access database can be cached in RAM. macros. The "back-end" database can be stored in a location shared by many users. The database can be divided into a front end database that contains the application objects (queries. each user has a copy of Microsoft Access installed on their machine along with their application database. or large organizations separated by great distances. and is linked to tables stored in a back end shared database containing the data. Using this design. forms. the effect of packet latency on the record locking system caused Access databases to be too slow on Virtual Private Network (VPN) or Wide Area Network (WAN) against a Jet database. Linked tables in Access use absolute paths rather than relative paths. such as a file server. the front end database is replaced without impacting the data database. reports. The 'front-end' database is distributed to each user's desktop and linked to the shared database. If Access Database performance over VPN or WAN suffers. Database Splitter and Linked Table Manager.

User should have a LAN and internet connection. THE SYSTEM FEATURES 22 | P a g e .SOFTWARE REQU REMENT SPECIFICATION The user¶s machine should not require any special setup to work with the Map -App. open source library (swingx-ws) has been used in the creation. these are the constraints the system must work within. Efforts are being made to make connections to Google map server but have been fruitless so far.  NON-FUNCTIONAL REQUIREMENTS There are requirements that are not functional in nature. Specifically. To keep the Application costless Google maps and Yahoo maps API have not been used as they do not provide free access to desktop application. To the extent possible. User should also have JDK installed on their systems. Moreover other free geoservices have an old database so the maps and results for searches suffer for the cause.

SEQUENCE DIAGRAM 23 | P a g e .

ACTIVITY DIAGRAM 24 | P a g e .

STATE CHART DIAGRAM 25 | P a g e .

CLASS DIAGRAM 26 | P a g e .

USE CASE DIAGRAM 27 | P a g e .

DEPLOYMENT DIAGRAM COLLABORATION DIAGRAM 28 | P a g e .

As we are keeping records server of the Map -App free of user intervention it can withstand the load. There must be a power backup for server system. SECURITY REQUIREMENTS Sensitive data (USER ACCOUNTS) is protected from unwanted access by using appropriate technology and implementing strict user-access criteria. the only user to the MapApp is already registered and the new users are created by database administrator . reliable performance and integrity of user accounts is ensured. of users access the Map -App. This is because of the use of multithreaded approach.NON FUNCTIONAL REQUIREMENT PERFORMANCE REQUIREMENTS System can withstand even though any no. 29 | P a g e . SAFETY REQUIREMENTS By incorporating a records server from a proven RDBMS (ORACLE) into the system. Currently.

User should be able to use the application without any training..FUNCTIONAL REQUIREMENT y Functional Requirements are those that refer to the functionality of the system. When a User opens the application it will connect to the online tile mapserver to load the map and data from the database is loaded as required. Every possible attempt has been made to provide user with a highly functional Mapping Application. Also the previous markers are loaded from the database.e. what services it will provide to the user. 30 | P a g e . i. It is very easy to use. Whenever a marker or a waypoint is added a respective entry is made in the database. SOFTWARE QUALITY ATTRIBUTES Menu-Driven Programs with user friendly interfaces. y The MAP-App will be a desktop application.

This system will be web-based. An Internet connection is necessary to access the maps and other features of the ap plication. 31 | P a g e .DESIGN The MAP-App retrieves maps from the openstreetmaps server and marker locations from the department server system. linking to tile map server and online services such as geonames for location and article search. On launch of application user will be asked to enter username and password which will be cross-checked from the database. browses to his intended spot on map and adds a marker at it. SYSTEM ENVIRONMENT Map-App can work only if the end user system can establish a connection to a tile map server (openstreetmaps in this case) also for user to be able to logon and store his data a connection with the database server is necessary. If match is successful user will be able to store his data in the database. USE CASES Add a Marker The User enters username and password.

2. These results are marked on the map. Requirements: the Map-App should be connected to the records database. User enters the name for the location 5. online map server and the geonames web service. 2. User enters the search item. Appropriate zoom level is selected 3. User selects if he wants to save the results 4. Confirmation is received. 1. 3.Requirements: the map-app should be connected to the records database and online map server. 32 | P a g e . Query is made to geonames which returns a XML page containing 10 results from Wikipedia. 1. User centres the map to the location he wishes to save. Confirmation is received Search a Wikipedia Article The User enters search item and the 10 results obtained are marked geographically with the map cantered at the top result. User clicks on button µAdd a Marker¶ 4.

Reverse-Geocode ± Search address from location The User enters coordinates (latitude/longitude) which is searched and the address is displayed on the map if found.Geocode ± Search a location from address The User enters street address which is searched and marked on the map iffound. User enters the Address. Confirmation is received. Query is made to a geocoding web service which returns a XML page containing results for the address. Requirements: the Map-App should be connected to the records database. 3. online map server and web service. User selects if he wants to save the results 4. 1. These results are marked on the map. 33 | P a g e . 2.

This result is displayed. 2. User selects if he wants to save the results 4. Query is made to a reverse-geocoding web service which returns a XML page containing result for the coordinate. This result is marked on the map.Requirements: the Map-App should be connected to the records database. 34 | P a g e . 3. online map server and web service. 2. 1. 1. Find Weather of a Place: The User enters city name which is searched and weather is displayed if available. User enters the city name. Requirements: the Map-App should be connected to the online map server and web service. User enters the latitude and longitude. Confirmation is received. Query is made to a web service which returns a XML page containing result.

2. 1. 3. 35 | P a g e .Find Path from Source to Destination: The User enters/marks source and destination and the shortest path between them is displayed. User clicks on button µFind path¶ 4. Requirements: the map-app should be connected to the records database and online map server. The Graphical calculations are made and the shortest path is shown on the map. User centres the map and marks the source and destination. Appropriate zoom level is selected.

class.getString("title")). // NOI18N versionLabel. The content of this method is * always regenerated by the Form Editor.JLabel appTitleLabel = new javax.class).swing.setName("appTitleLabel"). // NOI18N setModal(true). appTitleLabel.getFont(). // NOI18N appTitleLabel.ResourceMap resourceMap = org.class). javax.ActionMap actionMap = org. } @Action public void closeAboutBox() { dispose(). javax.swing.JLabel().JLabel appVersionLabel = new javax.setName("closeButton").JLabel versionLabel = new javax.getString("Application. javax. // NOI18N appTitleLabel. appTitleLabel.setText(resourceMap.getResourceMap(MapAb outBox.getStyle() | java.Application.getInstance(mapapp.JLabel().getStyle() | java.JLabel appDescLabel = new javax.title")).application.getString("versionLabel.awt. */ // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { closeButton = new javax. versionLabel.MapApp.jdesktop.JLabel imageLabel = new javax.swing.getActionMap(MapAbou tBox.java */ package mapapp. import org.swing.swing. initComponents().BOLD. setName("aboutBox").jdesktop.DISPOSE_ON_CLOSE).setText(resourceMap.getFont().awt.getInstance(mapapp.setFont(versionLabel.JButton().swing. // NOI18N 36 | P a g e . // NOI18N closeButton.getContext(). javax. closeButton.swing. // NOI18N setResizable(false).deriveFont(appTitleLabel. getRootPane().BOLD)).application.Application.awt.getFont().JLabel().JDialog { public MapAboutBox(java. this).text")).swing.swing. org.swing.class).application.Action. public class MapAboutBox extends javax.JLabel().DOCUMENTATION CODING /* * MapAboutBox.Frame parent) { super(parent). javax.MapApp.get("closeAboutBox")).deriveFont(versionLabel.WindowConstants.jdesktop.application. setDefaultCloseOperation(javax.swing.JLabel(). setTitle(resourceMap.setFont(appTitleLabel.getFont().Font. * WARNING: Do NOT modify this code.setAction(actionMap.getSize()+4)).swing.jdesktop.getFont().getContext().swing.swing. } /** This method is called from within the constructor to * initialize the form.Font. javax.setDefaultButton(closeButton).

versionLabel.setName("versionLabel"); // NOI18N appVersionLabel.setText(resourceMap.getString("Application.version")); // NOI18N appVersionLabel.setName("appVersionLabel"); // NOI18N appDescLabel.setText(resourceMap.getString("appDescLabel.text")); // NOI18N appDescLabel.setName("appDescLabel"); // NOI18N imageLabel.setIcon(resourceMap.getIcon("imageLabel.icon")); // NOI18N imageLabel.setName("imageLabel"); // NOI18N javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addComponent(imageLabel) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup() .addComponent(versionLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(appVersionLabel) .addGap(152, 152, 152)) .addComponent(appTitleLabel, javax.swing.GroupLayout.Alignment.LEADING) .addComponent(appDescLabel, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 272, Short.MAX_VALUE) .addComponent(closeButton)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup (javax.swing.GroupLayout.Alignment.LEADING) .addComponent(imageLabel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(appTitleLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(appDescLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(versionLabel) .addComponent(appVersionLabel)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 83, Short.MAX_VALUE) .addComponent(closeButton) .addContainerGap()) ); pack(); }// </editor-fold> // Variables declaration - do not modify private javax.swing.JButton closeButton; // End of variables declaration

} 37 | P a g e

/* * MapApp.java */ package mapapp; import org.jdesktop.application.Application; import org.jdesktop.application.SingleFrameApplication; /** * The main class of the application. */ public class MapApp extends SingleFrameApplication { /** * At startup create and show the main frame of the application. */ @Override protected void startup() { show(new MapView(this)); } /** * This method is to initialize the specified window by injecting resources. * Windows shown in our application come fully initialized from the GUI * builder, so this additional configuration is not needed. */ @Override protected void configureWindow(java.awt.Window root) { } /** * A convenient static getter for the application instance. * @return the instance of MapApp */ public static MapApp getApplication() { return Application.getInstance(MapApp.class); } /** * Main method launching the application. */ public static void main(String[] args) { launch(MapApp.class, args); } }

38 | P a g e

/* * MapView.java */ package mapapp; import java.awt.Color; import java.awt.Graphics2D; import java.awt.Polygon; import java.util.logging.Level; import java.util.logging.Logger; import javax.xml.xpath.XPathExpressionException; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.Task; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.net.URL; import java.sql.*; import java.util.HashSet; import java.util.Set; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JPasswordField; import javax.swing.SwingUtilities; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; import javax.xml.xpath.XPathFactory; import org.jdesktop.swingx.JXMapViewer; import org.jdesktop.swingx.mapviewer.GeoPosition; import org.jdesktop.swingx.mapviewer.Waypoint; import org.jdesktop.swingx.mapviewer.WaypointPainter; import org.jdesktop.swingx.mapviewer.WaypointRenderer; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; /** * The application's main frame. */ public class MapView extends FrameView { public MapView(SingleFrameApplication app) { super(app);

39 | P a g e

Connection con=null; try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); con=DriverManager.getConnection("jdbc:odbc:amit"); Statement stmt=con.createStatement(); ResultSet rs=stmt.executeQuery("Select * "+"from pass"); if(rs.next()) { } else { final JPasswordField jpf = new JPasswordField(); JOptionPane jop = new JOptionPane(jpf, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION); JDialog dialog = jop.createDialog("Create New Password:"); dialog.addComponentListener(new ComponentAdapter(){ @Override public void componentShown(ComponentEvent e){ SwingUtilities.invokeLater(new Runnable(){ @Override public void run(){ jpf.requestFocusInWindow(); } }); } }); dialog.setVisible(true); int result = (Integer)jop.getValue(); dialog.dispose(); String password = null; if(result == JOptionPane.OK_OPTION){ password = jpf.getText(); Statement stmt1=con.createStatement(); stmt1.executeUpdate("insert into pass "+"values('"+password+"')"); JOptionPane.showMessageDialog(jXMapKit1,"Hi!! New User \n this is MapApp 2.0 " , "Welcome",JOptionPane.PLAIN_MESSAGE); } if(result == JOptionPane.CANCEL_OPTION) { System.exit(0); } rs.close(); } } catch(SQLException sqle) { System.err.println(sqle.getMessage()); } catch(ClassNotFoundException cnfe) { System.err.println(cnfe.getMessage()); } catch(Exception e) { System.err.println(e.getMessage()); } finally {

40 | P a g e

OK_CANCEL_OPTION). Statement stmt=con.showMessageDialog(jXMapKit1.err.invokeLater(new Runnable(){ @Override public void run(){ jpf.QUESTION_MESSAGE.jdbc. JDialog dialog = jop. } }).executeQuery("Select * "+"from pass where pswd='"+password+"'").getMessage()).close(). String password = null. } } catch(SQLException sqle) { System. JOptionPane jop = new JOptionPane(jpf. if(rs.OK_OPTION){ password = jpf. "Error!!!". JOptionPane.createStatement().createDialog("Please Enter Password to Continue:"). ResultSet rs=stmt.ERROR_MESSAGE).forName("sun. 41 | P a g e .println(sqle. dialog.setVisible(true).getConnection("jdbc:odbc:amit").close().addComponentListener(new ComponentAdapter(){ @Override public void componentShown(ComponentEvent e){ SwingUtilities. String a. con=DriverManager.dispose().getText().err.println(sqle. } catch(SQLException sqle) { System. } rs. JOptionPane.try { if(con!=null) { con. } } final JPasswordField jpf = new JPasswordField().exit(0). } }).JdbcOdbcDriver").next()) { } else { JOptionPane."Bad Password!!" . try { Class.JOptionPane.odbc. dialog.getMessage()). System. con=null. if(result == JOptionPane.getValue().requestFocusInWindow(). dialog. int result = (Integer)jop.

} initComponents().isRunning()) { 42 | P a g e .err. } }).exit(0).getMessage()). } busyIconTimer = new Timer(busyAnimationRate. i < busyIcons. int busyAnimationRate = resourceMap.setRepeats(false).println(e.busyIcons[" + i + "]").busyAnimationRate"). } } } if(result == JOptionPane. statusAnimationLabel.length.beans.setIcon(busyIcons[busyIconIndex]).beans. taskMonitor.getPropertyName(). etc ResourceMap resourceMap = getResourceMap().getInteger("StatusBar.println(sqle.setIcon(idleIcon). } } catch(SQLException sqle) { System.getIcon("StatusBar.println(cnfe. for (int i = 0.} catch(ClassNotFoundException cnfe) { System. idle icon and busy animation. if ("started".getMessage()). // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(getApplication().PropertyChangeEvent evt) { String propertyName = evt.idleIcon").setText("").setVisible(false). } catch(Exception e) { System.PropertyChangeListener() { public void propertyChange(java.getIcon("StatusBar.close().getMessage()).equals(propertyName)) { if (!busyIconTimer.length. messageTimer = new Timer(messageTimeout.getContext()).CANCEL_OPTION) { System.getInteger("StatusBar. messageTimer. } }). new ActionListener() { public void actionPerformed(ActionEvent e) { statusMessageLabel. statusAnimationLabel. progressBar. new ActionListener() { public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons. i++) { busyIcons[i] = resourceMap.err. // status bar initialization .message timeout. } finally { try { if(con!=null) { con. int messageTimeout = resourceMap.addPropertyChangeListener(new java.messageTimeout"). idleIcon = resourceMap.err.

aboutBox. } else if ("done". } MapApp. jPanel4 = new javax. jLabel5 = new javax. progressBar.JPanel().setIndeterminate(false).JPanel(). progressBar. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code"> private void initComponents() { mainPanel = new javax.getMainFrame(). messageTimer.setValue(0). } else if ("progress". jTabbedPane2 = new javax. progressBar.equals(propertyName)) { int value = (Integer)(evt.getNewValue()).swingx.show(aboutBox).setLocationRelativeTo(mainFrame). progressBar.getApplication(). } progressBar.JXMapKit(). statusMessageLabel.statusAnimationLabel.swing.swing.getNewValue()). busyIconTimer. jXMapKit1 = new org.swing. jTextField3 = new javax. progressBar. jPanel1 = new javax. aboutBox = new MapAboutBox(mainFrame).equals(propertyName)) { String text = (String)(evt.swing.setVisible(true). jButton2 = new javax.swing. statusAnimationLabel. The content of this method is * always regenerated by the Form Editor.start().equals(propertyName)) { busyIconTimer. } /** This method is called from within the constructor to * initialize the form.JLabel().setIcon(busyIcons[0]). } else if ("message".swing. * WARNING: Do NOT modify this code.setText((text == null) ? "" : text).setVisible(true).JPanel().setVisible(false).JTextField().setIndeterminate(true).JTabbedPane(). progressBar.swing.stop(). } } }).JButton(). 43 | P a g e . busyIconIndex = 0.getApplication().jdesktop. } @Action public void showAboutBox() { if (aboutBox == null) { JFrame mainFrame = MapApp.restart().setValue(value).setIcon(idleIcon).

JLabel().swing.jLabel6 = new javax.swing.swing. jPanel2 = new javax.swing.swing. jLabel19 = new javax.JTextField().JButton().swing.JTextField().swing.JLabel(). afs = new javax.List().swing. sdf = new javax.JButton(). jLabel20 = new javax.JLabel(). ser = new javax.JLabel().JButton(). jBn4 = new javax.swing.JLabel(). dfty = new javax. jf3 = new javax.swing.swing. jLabel17 = new javax.JLabel().swing.swing. adasd = new javax.swing.JButton(). jLabel22 = new javax. jLabel12 = new javax. jTextField1 = new javax.JLabel().JButton().swing. jLabel11 = new javax. jLabel18 = new javax. jLabel14 = new javax.swing.swing.swing.JLabel().JLabel().swing.swing. jPanel8 = new javax.JTabbedPane(). list3 = new java.swing. jLabel25 = new javax.swing. jLabel8 = new javax. jLabel15 = new javax.JTextField().List().swing.JLabel(). jButton1 = new javax. jPanel3 = new javax.JLabel().JLabel().JButton().JLabel().awt.swing.swing.JPanel(). jLabel23 = new javax. jButton6 = new javax. jPanel9 = new javax.JTextField().swing.JLabel().JLabel().JTextField(). jLabel16 = new javax.swing. gj = new javax.JLabel().awt.JTextField().swing. jTextField10 = new javax. jButton5 = new javax. gyu = new javax. jPanel7 = new javax.swing.swing. 44 | P a g e .swing.JLabel().swing. sgd = new javax.swing.JLabel().JLabel().swing. jf1 = new javax.swing. jTextField9 = new javax.JTextField().JPanel(). list2 = new java.JPanel().JPanel().JPanel().swing.swing.JTextField().JLabel().swing. jTabbedPane1 = new javax.JPanel().JButton(). jLabel21 = new javax. jLabel7 = new javax. jLabel2 = new javax. jTextField8 = new javax. adgf = new javax.swing.swing. jLabel24 = new javax. jf2 = new javax.JButton().swing. jLabel1 = new javax.List().JLabel().JLabel().swing.swing.swing.JLabel().JLabel().swing. ryte = new javax. list1 = new java. jTextField2 = new javax.JLabel().awt.swing.JPanel(). asfa = new javax.swing. jLabel13 = new javax.swing.swing.

swing. // NOI18N jPanel4.class). javax.setAction(actionMap.swing.swing. this).class).JMenuItem(). // NOI18N jTextField3.setText(resourceMap.Application.JMenuItem aboutMenuItem = new javax.swing. mainPanel.swing.setName("list1").event. jLabel26 = new javax.application. // NOI18N jLabel5.swing. // NOI18N org.JSeparator statusPanelSeparator = new javax.text")).JMenu().swing.swing.setName("mainPanel").JLabel().getInstance(mapapp. // NOI18N jTabbedPane2.awt.DefaultProviders.JSeparator().ActionListener() { 45 | P a g e .getActionMap(MapView .class).ResourceMap resourceMap = org.JProgressBar(). // NOI18N list1.jdesktop.Application. jLabel5.JLabel().text")).swing.jdesktop.swing. // NOI18N javax.getString("jLabel5.swing. jLabel4 = new javax.setName("jLabel6").setName("ryte").swing.getString("ryte.JLabel().MapApp.MapApp.getContext().getString("jTextField3.ActionMap actionMap = org.jdesktop.swing. // NOI18N jXMapKit1.setName("jXMapKit1").swing. // NOI18N jLabel6. jXMapKit1.JMenuItem exitMenuItem = new javax. javax.JLabel(). javax.text")). // NOI18N jButton2. // NOI18N jTextField3. // NOI18N ryte.jdesktop. // NOI18N jLabel6.getString("jButton2.setText(resourceMap.JMenu(). menuBar = new javax.getContext().setName("jTextField3").swing.jLabel3 = new javax.class.swing.getResourceMap(MapVi ew. progressBar = new javax.swing. statusMessageLabel = new javax. ryte. // NOI18N jButton2.setText(resourceMap.JButton(). jLabel27 = new javax.setName("jPanel4").text")). jButton7 = new javax. statusAnimationLabel = new javax.JXMapKit.setName("jLabel5").JLabel().application.get("searchWikipedia")). // NOI18N list1. javax. // NOI18N jPanel1.setText(resourceMap.JMenuItem().setName("jTabbedPane2").getInstance(mapapp.JPanel(). // NOI18N ryte.swing.swing.addActionListener(new java.OpenStreetMaps).JMenu helpMenu = new javax.setVisible(true).JLabel(). statusPanel = new javax.JMenuBar().JMenu fileMenu = new javax.setName("jPanel1"). jButton2.text")).getString("jLabel6.setName("jButton2").application. javax.setText(resourceMap.swing.swingx.setDefaultProvider(org.swing.

addComponent(ryte) .addGroup(jPanel4Layout.Alignment.createSequentialGroup() .addPreferredGap(javax.addComponent(jLabel6) . } }).TRAILING.GroupLayout. javax. javax.swing. javax.swing.addGroup(jPanel4Layout. 98.LayoutStyle.GroupLayout(jPanel4).swing.swing.addComponent(jTextField3.swing.Alignment. 18. Short. javax.event.MAX_VALUE)) ).Alignment.Alignment.LEADING.setLayout(jPanel4Layout).LEADING.GroupLayout.swing. 220.PREFERRED_SIZE) .Alignment.GroupLayout.GroupLayout.setHorizontalGroup( jPanel4Layout.GroupLayout.addContainerGap()) ). Short.Alignment.addGroup(jPanel4Layout.RELATED) .swing.addPreferredGap(javax. jPanel4.ComponentPlacement. jPanel4Layout.GroupLayout.GroupLayout. 31.GroupLayout.LayoutStyle. 31) .createSequentialGroup() .swing.swing.setVerticalGroup( jPanel4Layout.swing.createParallelGroup(javax.addComponent(jLabel5) .Alignment.swing.awt.addComponent(ryte))) .swing.swing.addComponent(jLabel5) .addComponent(jLabel6) .RELATED) . 68. Short.addComponent(jButton2.addGroup(jPanel4Layout.MAX_VALUE)))) .addPreferredGap(javax.addGroup(jPanel4Layout.GroupLayout.addGap(31. Short.GroupLayout.addGroup(jPanel4Layout.addComponent(jTextField3.addGroup(jPanel4Layout.swing.swing.BASELINE) .PREFERRED_SIZE.addContainerGap() .swing.addGap(18.swing.MAX_VALUE)) .GroupLayout.LEADING) . javax.createSequentialGroup() .addGroup(jPanel4Layout.DEFAULT_SIZE.GroupLayout.createParallelGroup(javax.LEADING) .swing.Alignment.Alignment. javax.swing.PREFERRED_SIZE)) .PREFERRED_SIZE. 18) . 46 | P a g e .GroupLayout.DEFAULT_SIZE.createSequentialGroup() .createParallelGroup(javax.public void actionPerformed(java.PREFERRED_SIZE. javax.addComponent(list1.createParallelGroup(javax.ComponentPlacement. javax.GroupLayout.swing.MAX_VALUE) . javax. javax.GroupLayout.swing.LayoutStyle. javax.RELATED) .addComponent(list1.addContainerGap(288.swing.addGroup(jPanel4Layout.LEADING) .swing.DEFAULT_SIZE.GroupLayout.ComponentPlacement.addComponent(jButton2)) .LEADING) . false) .addGroup(jPanel4Layout.createParallelGroup(javax.GroupLayout.DEFAULT_SIZE. javax.createParallelGroup(javax.GroupLayout.GroupLayout jPanel4Layout = new javax. jPanel4Layout.ActionEvent evt) { ryteActionPerformed(evt).createSequentialGroup() .createParallelGroup(javax.LEADING) .

// NOI18N jLabel8. // NOI18N jLabel17.setName("jLabel16").getString("jLabel16. // NOI18N jLabel14.setText(resourceMap.addTab(resourceMap. // NOI18N jLabel22. // NOI18N jLabel18.setText(resourceMap.text")).text")).border. // NOI18N jLabel7.setAction(actionMap. // NOI18N jLabel8.setName("jLabel21").text")). // NOI18N jLabel20.setName("jTextField5").getString("jLabel7. // NOI18N jLabel15.setName("jLabel8").setBorder(javax.setName("jLabel7").getString("jLabel17.setName("jLabel7"). // NOI18N jButton5.text")).getString("jPanel8. // NOI18N jLabel19.setName("jLabel14").BorderFactory.title")) ).setName("jPanel5").swing.setName("jTextField4").text")). // NOI18N jLabel15.setName("jLabel8"). // NOI18N jLabel21. // NOI18N jTextField8.get("findWeather")).setName("jLabel23").setText(resourceMap. // NOI18N jLabel14. // NOI18N jLabel17. // NOI18N jLabel11. // NOI18N jButton5. // NOI18N jLabel12.getString("jLabel15.getString("jPanel4. // NOI18N 47 | P a g e .setText(resourceMap.text")).getString("jLabel14.setName("jButton3").setName("jLabel22").getString("jLabel18. // NOI18N jLabel16. // NOI18N jLabel16.setName("jLabel17"). // NOI18N jLabel18. // NOI18N jLabel19. // NOI18N jPanel8. // NOI18N jPanel7.setName("jLabel15").setName("jPanel8"). // NOI18N jTextField9.setText(resourceMap.getString("jLabel8.text")). // NOI18N jLabel23.tabTitle").setText(resourceMap.text")).getString("jButton3. // NOI18N jLabel7.setName("jLabel20").setName("jLabel19").TabConstraints.createTitledBorder(resourceMap.getString("jLabel19. jPanel4).setText(resourceMap. // NOI18N jPanel8.setName("jLabel18").jTabbedPane2.setText(resourceMap.text")).setText(resourceMap. // NOI18N jButton5.

10) . 26. 10.addComponent(jLabel18.LEADING.PREFERRED_SIZE)) .swing. javax.GroupLayout.GroupLayout. javax.createSequentialGroup() .swing.createParallelGroup(javax.addGap(26.Alignment.DEFAULT_SIZE.addComponent(jLabel23.setHorizontalGroup( jPanel8Layout.swing.swing.addComponent(jLabel15) .LEADING) .Alignment.addComponent(jLabel16)) .GroupLayout. false) . javax. Short.GroupLayout.swing.DEFAULT_SIZE. 18) . Short. javax.addGroup(jPanel8Layout.GroupLayout.addComponent(jLabel23)) 48 | P a g e . 152.swing.DEFAULT_SIZE. 45. 26))) . Short.swing.DEFAULT_SIZE.addComponent(jLabel17) .GroupLayout.GroupLayout.swing.swing.createSequentialGroup() .addGap(18.GroupLayout.addComponent(jLabel21. 18.createParallelGroup(javax.addComponent(jLabel14) . Short.swing. 71.createSequentialGroup() . jPanel8Layout.GroupLayout. Short.Alignment.setLayout(jPanel8Layout).LEADING) .addComponent(jLabel14) .MAX_VALUE) .TRAILING. javax.addGap(10.GroupLayout.addComponent(jLabel22.createParallelGroup(javax.swing.Alignment.addContainerGap() .createParallelGroup(javax. // NOI18N jLabel25.BASELINE) .createParallelGroup(javax. jPanel8.addGroup(jPanel8Layout.swing.MAX_VALUE) .addGroup(jPanel8Layout.GroupLayout.GroupLayout.LEADING.LEADING) .addComponent(jLabel20) .addComponent(jLabel19)) .PREFERRED_SIZE.MAX_VALUE) . javax.addGroup(jPanel8Layout.addGroup(jPanel8Layout.Alignment.swing.Alignment.LEADING) . 152)) ). javax. jPanel8Layout.Alignment.setName("jLabel24").DEFAULT_SIZE.createParallelGroup(javax. // NOI18N javax.addGroup(jPanel8Layout.PREFERRED_SIZE.swing.addComponent(jLabel25.swing.GroupLayout.MAX_VALUE)) . false) . 67.addGroup(jPanel8Layout.RELATED) .LEADING) . Short.ComponentPlacement. javax.setVerticalGroup( jPanel8Layout.MAX_VALUE)) .swing.MAX_VALUE) .Alignment.addPreferredGap(javax.addGroup(jPanel8Layout.GroupLayout. 128.GroupLayout(jPanel8). 45.swing. javax. 128.addGroup(jPanel8Layout.createParallelGroup(javax.GroupLayout.GroupLayout. 128.GroupLayout.DEFAULT_SIZE.GroupLayout. 67.addComponent(jLabel20.createParallelGroup(javax.jLabel24.swing.swing.addComponent(jLabel17.swing.addGroup(jPanel8Layout.swing.Alignment.GroupLayout.setName("jLabel25"). javax.GroupLayout jPanel8Layout = new javax.createParallelGroup(javax. false) .addComponent(jLabel24.swing.PREFERRED_SIZE) .addGap(152.LayoutStyle.

Alignment.PREFERRED_SIZE) .MAX_VALUE) .swing.ComponentPlacement.DEFAULT_SIZE.swing.LEADING.addGroup(jPanel8Layout. javax.swing.DEFAULT_SIZE.addComponent(jLabel12)) .addGroup(jPanel7Layout.ComponentPlacement.swing.addComponent(jLabel18) .MAX_VALUE)) .swing.addGroup(jPanel7Layout.GroupLayout.createParallelGroup(javax.ComponentPlacement. jPanel7Layout. javax.createParallelGroup(javax.addComponent(jTextField9.RELATED.createSequentialGroup() .GroupLayout.swing.Alignment. 85))) .GroupLayout.addComponent(jLabel19) .DEFAULT_SIZE.LEADING. false) .createSequentialGroup() .swing.Alignment.swing. Short.addComponent(jLabel22) .GroupLayout.DEFAULT_SIZE.createParallelGroup(javax.addGroup(jPanel8Layout.PREFERRED_SIZE.addContainerGap() .swing.addGroup(jPanel7Layout.GroupLayout.GroupLayout.MAX_VALUE) . Short.LEADING.addGroup(jPanel7Layout. javax.LEADING) . 83.BASELINE) .swing.Alignment.swing. false) . javax.createParallelGroup(javax. 31)) ).GroupLayout jPanel7Layout = new javax.swing.addComponent(jLabel8.LEADING) .MAX_VALUE)) .addComponent(jLabel7.BASELINE) .swing.GroupLayout.TRAILING) .createParallelGroup(javax.createParallelGroup(javax. Short.GroupLayout.addPreferredGap(javax.swing.createSequentialGroup() .swing.swing. 31.addComponent(jLabel15) .PREFERRED_SIZE)) . 85.RELATED) .swing.GroupLayout.swing.LEADING) 49 | P a g e .addGroup(jPanel7Layout. 174. jPanel7.addComponent(jButton5.addPreferredGap(javax.addComponent(jPanel8.ComponentPlacement. jPanel7Layout.setVerticalGroup( jPanel7Layout.GroupLayout.Alignment. jPanel7Layout.addComponent(jLabel24)) .LayoutStyle.addComponent(jLabel11) .swing.Alignment.swing.swing.createParallelGroup(javax.GroupLayout..addGroup(javax.PREFERRED_SIZE.addPreferredGap(javax.swing.DEFAULT_SIZE.Alignment. javax.addComponent(jLabel21) .addComponent(jLabel25))) ).swing.addPreferredGap(javax.MAX_VALUE) . Short.GroupLayout(jPanel7).GroupLayout.createParallelGroup(javax.addComponent(jLabel16) .LayoutStyle.ComponentPlacement.addGroup(jPanel7Layout.LayoutStyle.addGap(85.GroupLayout.RELATED) . javax.swing.Alignment. javax. javax.GroupLayout. javax.swing.RELATED) .GroupLayout.GroupLayout.GroupLayout.addGap(31. javax. Short. 104.LayoutStyle.DEFAULT_SIZE.GroupLayout.GroupLayout.addPreferredGap(javax.RELATED.setHorizontalGroup( jPanel7Layout.LayoutStyle.Alignment.swing. 8.setLayout(jPanel7Layout). javax.addComponent(jTextField8) .

javax.addComponent(jTextField8.awt.LEADING) .addComponent(jLabel12) .swing.GroupLayout.awt.GroupLayout.RELATED) .awt.setLayout(gyuLayout).LEADING) 50 | P a g e .LEADING) . javax.createParallelGroup(javax.Alignment. } }).addGroup(jPanel7Layout. // NOI18N adasd.swing.DEFAULT_SIZE.createSequentialGroup() .swing.addContainerGap()) ).addGroup(jPanel7Layout.LEADING) . Short.GroupLayout.addTab("Find Weather".setName("afs").createParallelGroup(javax.swing.swing.swing.setName("gyu"). jPanel7).addGroup(jPanel7Layout.swing.setName("adasd").setText(resourceMap. // NOI18N adasd.Alignment.Alignment.addPreferredGap(javax.createSequentialGroup() .addGap(5.GroupLayout.PREFERRED_SIZE))) . } }).ActionListener() { public void actionPerformed(java.addPreferredGap(javax.LayoutStyle.createSequentialGroup() .Alignment.ActionEvent evt) { afsActionPerformed(evt). javax.addGroup(jPanel7Layout..swing.MAX_VALUE))) .addGroup(jPanel7Layout.event. javax. // NOI18N list3.DEFAULT_SIZE.addComponent(jButton5)) .DEFAULT_SIZE. javax. // NOI18N afs. // NOI18N afs.swing.GroupLayout.setName("list3"). 5.swing.addComponent(jLabel8) .swing.addComponent(jLabel11) . javax.createParallelGroup(javax.addGroup(jPanel7Layout. gyu. 5) .GroupLayout.text")).getString("afs.addGroup(jPanel7Layout.PREFERRED_SIZE.createParallelGroup(javax.swing.event.GroupLayout.addActionListener(new java.GroupLayout. gyu.PREFERRED_SIZE)) .swing.GroupLayout(gyu). javax.createParallelGroup(javax.ComponentPlacement.GroupLayout.ActionEvent evt) { adasdActionPerformed(evt).awt.Alignment.setHorizontalGroup( gyuLayout.getString("adasd.DEFAULT_SIZE.ComponentPlacement. gyuLayout.RELATED) .GroupLayout.swing.GroupLayout.addComponent(jTextField9.LayoutStyle.swing.GroupLayout.GroupLayout gyuLayout = new javax.BASELINE) . adasd.event.addComponent(jLabel7) .PREFERRED_SIZE.swing. javax.text")). javax.addActionListener(new java.GroupLayout.setText(resourceMap.addContainerGap() . jTabbedPane2.addComponent(jPanel8. // NOI18N afs.ActionListener() { public void actionPerformed(java.swing.event.

89) .GroupLayout. // NOI18N dfty.addGap(89.swing.createSequentialGroup() .setText(resourceMap. javax. 34.getString("adgf.event. // NOI18N adgf.GroupLayout.setText(resourceMap.addGap(31.MAX_VALUE)) ).addGroup(gyuLayout. javax.setName("adgf").ActionListener() { public void actionPerformed(java. 31.addContainerGap(12. // NOI18N gj.setName("dfty"). Short.ActionEvent evt) { sdfActionPerformed(evt).setText(resourceMap.addGap(34.createSequentialGroup() .GroupLayout.getString("gyu.text")).PREFERRED_SIZE) .text")). // NOI18N 51 | P a g e .addComponent(adasd))) .Alignment.awt.addComponent(adasd) .LEADING) .swing. } }). 197.setName("sdf").addComponent(afs)) .addGap(32. // NOI18N ser.addGroup(gyuLayout.createSequentialGroup() . // NOI18N ser.getString("jf1.text")).addGroup(gyuLayout.swing.swing.. // NOI18N sgd.Alignment.getString("sgd.PREFERRED_SIZE. 26) .addGroup(gyuLayout.PREFERRED_SIZE)) . gyuLayout.addGroup(gyuLayout.text")).getString("sdf.awt. // NOI18N adgf.setName("gj").GroupLayout.addTab(resourceMap. 26.setName("ser"). javax.text")).getString("ser. // NOI18N sdf. jTabbedPane2. 89.setVerticalGroup( gyuLayout. javax.createParallelGroup(javax.MAX_VALUE)) ).PREFERRED_SIZE. gyu).addComponent(list3.addContainerGap(353.setText(resourceMap. 34) . // NOI18N jf1.DEFAULT_SIZE.addGroup(gyuLayout.getString("gj.LEADING) . 31) . 32.GroupLayout.GroupLayout.swing.createSequentialGroup() .createParallelGroup(javax. 32) .addComponent(afs) .TabConstraints. // NOI18N sdf.GroupLayout. Short.setText(resourceMap. javax. // NOI18N sdf. // NOI18N sgd.swing. gj.swing.event.tabTitle").createSequentialGroup() .addComponent(list3.addGap(26.addContainerGap() .text")).setText(resourceMap.addActionListener(new java.setName("sgd").

addComponent(jf1.addGap(38.GroupLayout dftyLayout = new javax.swing.ComponentPlacement.addGroup(dftyLayout.swing.setName("asfa").swing.addComponent(jf2.LEADING) .addGroup(dftyLayout. javax.RELATED)) .MAX_VALUE) .DEFAULT_SIZE.setName("jf1"). 74.GroupLayout.text")).addGap(49. // NOI18N asfa.PREFERRED_SIZE)) .GroupLayout.addPreferredGap(javax.addComponent(ser) .addGroup(dftyLayout.GroupLayout. javax. dfty.LayoutStyle.PREFERRED_SIZE.ComponentPlacement.GroupLayout.createParallelGroup(javax.Alignment. 38.PREFERRED_SIZE. javax. 49) . // NOI18N jBn4. // NOI18N jf3.addComponent(gj.swing. dftyLayout. // NOI18N asfa.LEADING) .LEADING) .createParallelGroup(javax. // NOI18N jf2.addComponent(jf3.text")).awt. 49.PREFERRED_SIZE.addActionListener(new java.LEADING) . 49.swing. Short.Alignment. javax.createParallelGroup(javax. // NOI18N jf3. } }).GroupLayout.GroupLayout(dfty).setText(resourceMap.GroupLayout.setName("jf3").swing.addGroup(dftyLayout.GroupLayout.getString("jBn4.GroupLayout.Alignment. javax.addGroup(dftyLayout.addComponent(sgd)) .LayoutStyle.DEFAULT_SIZE. 69. javax.addGap(69. Short.getString("asfa.swing. 137.setText(resourceMap.setHorizontalGroup( dftyLayout. javax.GroupLayout.addContainerGap() .GroupLayout.addComponent(sdf))) .getString("jf3.PREFERRED_SIZE)) .TRAILING) .setLayout(dftyLayout).Alignment. // NOI18N jBn4.swing.RELATED) .addGroup(dftyLayout.ActionEvent evt) { jBn4ActionPerformed(evt).setText(resourceMap.addComponent(jBn4)) 52 | P a g e .ComponentPlacement.text")).jf1.swing.addComponent(adgf.event.swing.addGroup(dftyLayout.Alignment.createParallelGroup(javax.swing.PREFERRED_SIZE) .UNRELATED) .GroupLayout.setName("jBn4").addComponent(asfa) .LayoutStyle.MAX_VALUE)) .getString("jf2.createSequentialGroup() .addGroup(dftyLayout.createParallelGroup(javax. javax.swing.addGroup(dftyLayout.createSequentialGroup() .swing.LEADING) .text")).setText(resourceMap. // NOI18N jf2.GroupLayout.GroupLayout.GroupLayout. 69) .awt. 38) .swing.createParallelGroup(javax.ActionListener() { public void actionPerformed(java.swing.addPreferredGap(javax.swing.event.swing.swing. // NOI18N jBn4. 49. javax.setName("jf2").createSequentialGroup() .addPreferredGap(javax. 137.swing.Alignment.createSequentialGroup() .

addComponent(adgf) .GroupLayout.swing.swing. javax.get("postalSearch")).swing.swing. // NOI18N jLabel13.addPreferredGap(javax.swing. 25.setName("jPanel3")..ComponentPlacement.swing. // NOI18N jLabel13.PREFERRED_SIZE.BASELINE) . javax.addGap(382.addComponent(sdf) .setText(resourceMap.swing.addContainerGap()))) ).getString("dfty.addPreferredGap(javax.createSequentialGroup() . // NOI18N jTabbedPane1.GroupLayout.addComponent(ser) .addPreferredGap(javax. 25)) . dfty).setName("jTextField10").setText(resourceMap. javax.createSequentialGroup() . // NOI18N jPanel3.GroupLayout.swing.GroupLayout.swing.LEADING) . javax. // NOI18N 53 | P a g e .DEFAULT_SIZE.getString("jButton6.swing.setName("jLabel13").addGroup(dftyLayout. javax.DEFAULT_SIZE.createSequentialGroup() .LayoutStyle.tabTitle").UNRELATED) .border.RELATED.swing.addContainerGap() .LEADING) .text")).ComponentPlacement.LayoutStyle.GroupLayout.addComponent(sgd) .LayoutStyle.addTab(resourceMap.GroupLayout.text")).addGroup(dftyLayout. dftyLayout.addGroup(dftyLayout. // NOI18N jButton6. javax.BorderFactory. Short.addComponent(asfa) .text")).GroupLayout. // NOI18N jTextField10. javax.addComponent(jf1.addComponent(jf2.GroupLayout.ComponentPlacement.swing.Alignment.MAX_VALUE) . // NOI18N jButton6.BASELINE) . javax.PREFERRED_SIZE)) .getString("jTextField10.setText(resourceMap.createParallelGroup(javax.setVerticalGroup( dftyLayout.getString("jLabel13.Alignment.addGroup(dftyLayout.DEFAULT_SIZE.TabConstraints.GroupLayout.addComponent(gj) .PREFERRED_SIZE) . // NOI18N jPanel9.addGroup(dftyLayout.GroupLayout.addComponent(jf3.GroupLayout. javax.swing.setName("jPanel9").PREFERRED_SIZE.createTitledBorder(resourceMap.setName("jButton6").swing.GroupLayout.GroupLayout.swing. // NOI18N jPanel9. 382.PREFERRED_SIZE.Alignment.createParallelGroup(javax. jTabbedPane2.createParallelGroup(javax.swing.setAction(actionMap.addGroup(dftyLayout.setBorder(javax.setName("jTabbedPane1").addGap(25.RELATED) . javax. // NOI18N jTextField10.DEFAULT_SIZE.swing.swing.title")) ).addComponent(jBn4)) .GroupLayout.PREFERRED_SIZE) .Alignment. // NOI18N jButton6.createParallelGroup(javax. 382)) ).getString("jPanel9.

GroupLayout.LEADING) .addGroup(jPanel9Layout.GroupLayout.GroupLayout.LEADING) .GroupLayout(jPanel3).GroupLayout.addGap(61.PREFERRED_SIZE) .swing.LEADING) .createSequentialGroup() .swing. javax.Alignment.swing.MAX_VALUE) .swing.LayoutStyle.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.PREFERRED_SIZE.GroupLayout. jPanel3Layout.swing.swing.GroupLayout.GroupLayout.GroupLayout jPanel9Layout = new javax.swing.ComponentPlacement. Short. javax.GroupLayout jPanel3Layout = new javax.swing.swing.setVerticalGroup( jPanel9Layout. jPanel9Layout.addPreferredGap(javax. 106. 61) .ComponentPlacement.addGap(4.PREFERRED_SIZE.createSequentialGroup() . 45.LayoutStyle.Alignment.LEADING) .swing.RELATED) . javax.addGroup(jPanel3Layout. jPanel9.addPreferredGap(javax.createParallelGroup(javax.addComponent(jLabel13)) . jPanel3Layout.ComponentPlacement. javax.swing. javax. 61.Alignment.swing. 22.GroupLayout(jPanel9). javax.addGroup(jPanel3Layout.Alignment.addGroup(jPanel3Layout. 45)) .addComponent(jPanel9. javax.createParallelGroup(javax.addGroup(jPanel3Layout.LayoutStyle. javax.swing.swing.createSequentialGroup() .UNRELATED) .addContainerGap()) ).addComponent(jTextField10.DEFAULT_SIZE.addComponent(jButton6) . Short.PREFERRED_SIZE.addContainerGap(270.addComponent(jPanel9.setVerticalGroup( jPanel3Layout. javax.swing. jPanel9Layout. // NOI18N javax.addGroup(jPanel3Layout.swing. 22) .addComponent(jButton6) . 141.addGap(45.DEFAULT_SIZE.swing.MAX_VALUE) ).MAX_VALUE)) ).GroupLayout.GroupLayout.addGap(22.setHorizontalGroup( jPanel3Layout.DEFAULT_SIZE.GroupLayout.swing.addPreferredGap(javax.createParallelGroup(javax.GroupLayout.DEFAULT_SIZE. javax.setHorizontalGroup( jPanel9Layout.setLayout(jPanel3Layout).GroupLayout.addComponent(jTextField10.swing.MAX_VALUE) .addComponent(list2.addComponent(jLabel13) .createSequentialGroup() .DEFAULT_SIZE.list2.addContainerGap() .swing.PREFERRED_SIZE)))) .GroupLayout.addGroup(jPanel3Layout.GroupLayout.createSequentialGroup() .swing.swing.LEADING) .PREFERRED_SIZE) .setName("list2").addComponent(list2.GroupLayout.setLayout(jPanel9Layout). javax.GroupLayout.Alignment. Short. 182.DEFAULT_SIZE.createParallelGroup(javax.swing. 4.GroupLayout.swing.RELATED) .LEADING) . 4)) ). Short.createParallelGroup(javax.createSequentialGroup() . javax. jPanel3.Alignment. 54 | P a g e . javax.

get("geoCode")).getString("jLabel26.addGroup(jPanel2Layout.setName("jLabel27").swing. jPanel2.text")). // NOI18N jLabel3.text")).getString("jLabel2.getString("jTextField2. jPanel2Layout.addComponent(jLabel1) .text")).Alignment.get("forUS")). // NOI18N jLabel1.setName("jLabel26").setName("jLabel2").setText(resourceMap.setName("jPanel2").setName("jTextField2"). // NOI18N javax.setHorizontalGroup( jPanel2Layout. // NOI18N jTextField2. // NOI18N jLabel1.text")). // NOI18N jButton1.Alignment.createSequentialGroup() .TabConstraints.setText(resourceMap.jTabbedPane1.addComponent(jLabel2)) .setText(resourceMap.addComponent(jLabel3) .addGroup(jPanel2Layout.createParallelGroup(javax.addTab(resourceMap.GroupLayout jPanel2Layout = new javax.setName("jTextField1"). // NOI18N jLabel26. // NOI18N jButton1.setText(resourceMap.createSequentialGroup() .text")).GroupLayout. // NOI18N jLabel2.swing.Alignment.text")). // NOI18N jLabel26. // NOI18N jButton7. // NOI18N jLabel27.LayoutStyle.swing.createParallelGroup(javax.setName("jLabel3").getString("jTextField1.setName("jButton1").text")).setText(resourceMap.LEADING) . // NOI18N jLabel2. // NOI18N jButton7.setLayout(jPanel2Layout).RELATED) 55 | P a g e .setName("jLabel1"). // NOI18N jLabel27. // NOI18N jLabel4.setText(resourceMap. // NOI18N jTextField1.addContainerGap() .GroupLayout.LEADING) .swing.getString("jButton7.swing.text")).text")).setText(resourceMap. // NOI18N jTextField1.LEADING) . // NOI18N jButton1.addComponent(jButton7) .addPreferredGap(javax.setAction(actionMap.getString("jLabel4.addGroup(jPanel2Layout.GroupLayout. // NOI18N jPanel2. jPanel3).addGroup(jPanel2Layout.setName("jButton7").setAction(actionMap.getString("jButton1.setText(resourceMap.getString("jLabel27.getString("jLabel1. // NOI18N jLabel4.createParallelGroup(javax.tabTitle"). // NOI18N jLabel3.getString("jPanel3.text")).setName("jLabel4").ComponentPlacement.addComponent(jLabel4) .setText(resourceMap.swing.GroupLayout(jPanel2).getString("jLabel3. // NOI18N jButton7.setText(resourceMap. // NOI18N jTextField2.

// NOI18N javax.swing.GroupLayout.setHorizontalGroup( 56 | P a g e .getString("jPanel2.addContainerGap(351. 92.DEFAULT_SIZE.swing.swing. Short. javax. javax.PREFERRED_SIZE.addComponent(jTextField2. javax.addContainerGap()) ).UNRELATED) .DEFAULT_SIZE.GroupLayout.addComponent(jTextField2.addPreferredGap(javax.addComponent(jLabel3.createParallelGroup(javax. javax.swing. 18. jPanel1. Short.addComponent(jLabel27)) . javax.addTab(resourceMap.swing.ComponentPlacement.GroupLayout.GroupLayout.PREFERRED_SIZE))) .DEFAULT_SIZE.addComponent(jTextField1.PREFERRED_SIZE.addComponent(jLabel1) .Alignment. 39.setLayout(jPanel1Layout). 22.createParallelGroup(javax.GroupLayout jPanel1Layout = new javax.swing.PREFERRED_SIZE) . jPanel2Layout.addComponent(jLabel27) . jPanel2Layout.LEADING) .GroupLayout(jPanel1).addGroup(jPanel2Layout. 18) .swing.GroupLayout.PREFERRED_SIZE)) .swing.Alignment.TRAILING. 39) .ComponentPlacement.GroupLayout.createParallelGroup(javax.addComponent(jButton1) . 14) .BASELINE) . 14.BASELINE) .Alignment.PREFERRED_SIZE.DEFAULT_SIZE.addComponent(jLabel26) .MAX_VALUE)) .GroupLayout.addGroup(javax. jPanel2). 18) .LayoutStyle.getString("jButton1.RELATED) ..swing. javax.Alignment.addComponent(jLabel4) .swing.GroupLayout.swing.addComponent(jLabel2)) . 4) .GroupLayout.LEADING) .getAccessibleContext().Alignment.addComponent(jLabel26) .PREFERRED_SIZE) .addGap(18.setAccessibleDescription(resourceMap.addGap(4.UNRELATED) .GroupLayout.createParallelGroup(javax.LayoutStyle.addPreferredGap(javax.LayoutStyle.setVerticalGroup( jPanel2Layout. javax.TRAILING. javax.swing.addComponent(jTextField1. Short.addGroup(jPanel2Layout.PREFERRED_SIZE.addGroup(jPanel2Layout.createSequentialGroup() . javax.createSequentialGroup() .Alignment.addGroup(jPanel2Layout.Alignment.swing. // NOI18N jTabbedPane1.TabConstraints.GroupLayout.GroupLayout.swing.GroupLayout.swing.addPreferredGap(javax.swing. javax.addGroup(jPanel2Layout. 106. 106.BASELINE) .addComponent(jButton1.MAX_VALUE)) ).GroupLayout.swing.addGap(39.swing.swing.GroupLayout.swing. 18. javax.GroupLayout.swing.GroupLayout. 4.ComponentPlacement.tabTitle").addComponent(jButton7)) .swing.createParallelGroup(javax. javax.GroupLayout. jButton1.addGap(18.AccessibleContext . javax.GroupLayout.addGap(14. jPanel1Layout.MAX_VALUE) .swing.swing.accessibleDescription")).

Short.addGroup(mainPanelLayout.createParallelGroup(javax.addPreferredGap(javax.swing.swing.addContainerGap()) ). Short.MAX_VALUE) . 895.Alignment.GroupLayout.GroupLayout.GroupLayout. 895.ComponentPlacement.PREFERRED_SIZE)) ).GroupLayout.setName("fileMenu").UNRELATED) .swing.LayoutStyle. mainPanelLayout. // NOI18N 57 | P a g e .get("quit")).LEADING) . 217.createParallelGroup(javax.createSequentialGroup() . javax.MAX_VALUE)) ).GroupLayout.swing.swing. Short.setVerticalGroup( jPanel1Layout.swing. javax.DEFAULT_SIZE.TRAILING.swing. 130. 430.setHorizontalGroup( mainPanelLayout.createParallelGroup(javax.TRAILING) .GroupLayout.Alignment.swing.GroupLayout.PREFERRED_SIZE. javax.LEADING) .swing.addComponent(jTabbedPane1.Alignment. // NOI18N exitMenuItem.GroupLayout. menuBar.addGroup(jPanel1Layout.GroupLayout.addComponent(jTabbedPane1.GroupLayout.setLayout(mainPanelLayout). mainPanelLayout. jPanel1Layout. javax. javax.getString("fileMenu.setVerticalGroup( mainPanelLayout.GroupLayout. javax.DEFAULT_SIZE.DEFAULT_SIZE.swing.swing.swing.addPreferredGap(javax.setText(resourceMap. // NOI18N fileMenu.GroupLayout.DEFAULT_SIZE.addGroup(javax.Alignment.LEADING) .addComponent(jXMapKit1.addComponent(jPanel1.LEADING) .createParallelGroup(javax.swing.DEFAULT_SIZE.swing.swing.GroupLayout.createSequentialGroup() . javax.MAX_VALUE)) .createSequentialGroup() .swing. 571.swing.addComponent(jXMapKit1.addContainerGap() .PREFERRED_SIZE.PREFERRED_SIZE)) .RELATED) .TRAILING) .GroupLayout. Short.GroupLayout.MAX_VALUE) .swing.text")).GroupLayout.Alignment.addGroup(jPanel1Layout. // NOI18N exitMenuItem.swing.GroupLayout(mainPanel). mainPanel.swing. mainPanelLayout. // NOI18N fileMenu.DEFAULT_SIZE. javax.addComponent(jTabbedPane2.addComponent(jTabbedPane2.swing.DEFAULT_SIZE.MAX_VALUE)) .Alignment.setName("menuBar").swing. javax.GroupLayout.MAX_VALUE) .createSequentialGroup() .addContainerGap()) ).setAction(actionMap. javax.createSequentialGroup() .GroupLayout.addGroup(javax.GroupLayout mainPanelLayout = new javax.addGroup(jPanel1Layout.addContainerGap() .ComponentPlacement.createParallelGroup(javax.swing.LayoutStyle. Short.GroupLayout.swing. javax.GroupLayout.setName("exitMenuItem").createParallelGroup(javax. javax.Alignment.jPanel1Layout. jPanel1Layout.Alignment. Short.TRAILING.DEFAULT_SIZE.addGroup(jPanel1Layout.addComponent(jPanel1. javax.

createParallelGroup(javax.add(exitMenuItem).swing.setName("aboutMenuItem").swing.addPreferredGap(javax. helpMenu. // NOI18N aboutMenuItem.DEFAULT_SIZE.PREFERRED_SIZE) .setVerticalGroup( statusPanelLayout. // NOI18N javax.LEADING) .ComponentPlacement.addContainerGap() . Short.BASELINE) .swing. javax.addPreferredGap(javax. // NOI18N aboutMenuItem. Short.GroupLayout(statusPanel).LEADING) . menuBar.setName("statusPanelSeparator"). Short.setHorizontalAlignment(javax.swing.swing.PREFERRED_SIZE.add(fileMenu).LayoutStyle. javax.GroupLayout.setText(resourceMap. // NOI18N helpMenu.Alignment.MAX_VALUE) .DEFAULT_SIZE.addComponent(statusMessageLabel) . // NOI18N statusAnimationLabel.PREFERRED_SIZE) .swing.ComponentPlacement.GroupLayout.GroupLayout. statusPanel.add(helpMenu).createParallelGroup(javax.swing.text")).addComponent(statusAnimationLabel) .createSequentialGroup() .setName("statusMessageLabel").ComponentPlacement.setAction(actionMap. javax.addPreferredGap(javax.GroupLayout.RELATED.createSequentialGroup() .swing. statusPanelLayout.swing.createParallelGroup(javax.GroupLayout statusPanelLayout = new javax.swing. javax.swing. 968.addContainerGap()) ).GroupLayout.GroupLayout.GroupLayout.setName("progressBar"). javax.PREFERRED_SIZE.LayoutStyle. statusPanel.LayoutStyle.DEFAULT_SIZE.setLayout(statusPanelLayout).getString("helpMenu.setHorizontalGroup( statusPanelLayout.addComponent(statusPanelSeparator.addComponent(progressBar.get("showAboutBox")).addGroup(statusPanelLayout. statusAnimationLabel.setName("helpMenu").Alignment.GroupLayout.swing.Alignment. // NOI18N statusMessageLabel.RELATED) . // NOI18N statusPanelSeparator.fileMenu.setName("statusAnimationLabel").MAX_VALUE) . menuBar.swing. // NOI18N helpMenu.addGroup(statusPanelLayout.GroupLayout.MAX_VALUE) .SwingConstants. statusPanelLayout.addGroup(statusPanelLayout.swing.GroupLayout. 2.swing.LEFT). javax.addComponent(statusPanelSeparator.addComponent(statusAnimationLabel) 58 | P a g e .add(aboutMenuItem).setName("statusPanel"). 1138.RELATED. // NOI18N progressBar.swing.addComponent(statusMessageLabel) . javax.

'"+t+"')").INFORMATION_MESSAGE). XPathConstants.event.i<sum. String sum = (String) xpath.charAt(i)!=' ') i++. } catch(SQLException sqle) { 59 | P a g e .evaluate("summary/text()".awt.. Double lon=Double.substring(i.ActionEvent evt) { try { org.substring(0. s1=sum.SEVERE.PREFERRED_SIZE. JOptionPane.setText(Double.log(Level. 3.ActionEvent evt) { GeoPosition g.class. setMenuBar(menuBar). }// </editor-fold> private void sdfActionPerformed(java. Connection con=null.length(). XPathConstants.GroupLayout.executeUpdate("insert into marker "+"values("+lat+". jf1.s2. stmt. try { Class.getText()).awt.forName("sun. sum=s1+"\n"+s2.jdbc. 3)) ).getLongitude())).addComponent(progressBar. javax.toString(g. i).ActionEvent evt) { Double lat=Double. String s1. setComponent(mainPanel).GroupLayout. String t=jf3.STRING).sum. ex). g=jXMapKit1. } JOptionPane. } private void ryteActionPerformed(java.DEFAULT_SIZE.getText().GroupLayout.getName()).showMessageDialog(jPanel4. } } private void jBn4ActionPerformed(java.createStatement(). } catch (XPathExpressionException ex) { Logger.setText(Double. con=DriverManager.event.addGap(3.swing.swing. Statement stmt=con.getLogger(MapView.Node node = list.getLatitude())).node.getCenterPosition().node.length()).awt. setStatusBar(statusPanel).getText()).parseDouble(jf1. javax.toString(g.title.parseDouble(jf2."+lon+".i+=30) { while(sum.odbc.w3c.dom.PREFERRED_SIZE)) .swing.event. for(int i=0.sum. null. s2=sum.getConnection("jdbc:odbc:amit"). String title = (String) xpath.item(list1.getSelectedIndex()).evaluate("title/text()".JdbcOdbcDriver").STRING). jf2. javax.

} finally { try { if(con!=null) { con.getMessage()). } } catch(SQLException sqle) { System.err.forName("sun.System. while(rs.parseDouble(rs.getMessage()). double lt=0.err.println(sqle. private void afsActionPerformed(java. } j++.jdbc.getString("long")). Connection con=null. ln=Double.println(cnfe. } } } Double lat[].getMessage()).err. con=DriverManager.j. i=list3.println(e. } catch(ClassNotFoundException cnfe) { System.createStatement().odbc.ln=0.ActionEvent evt) { Set<WikiWaypoint> waypoints = new HashSet<mapapp. int i.err.awt.getMessage()). } catch(Exception e) { System. ResultSet rs=stmt. Double lon[].JdbcOdbcDriver").err.event.WikiWaypoint>(). String t.close().println(e. try { Class.err. } rs.getConnection("jdbc:odbc:amit").getMessage()).next()) { if(j==i) { lt=Double. } catch(SQLException sqle) { System.getMessage()).println(cnfe.err.getString("lat")). } catch(Exception e) { System. } catch(ClassNotFoundException cnfe) { System.println(sqle. j=0.parseDouble(rs.println(sqle.executeQuery("Select * "+"from marker").getSelectedIndex().getMessage()). } finally { try { if(con!=null) { 60 | P a g e .close(). Statement stmt=con.

JdbcOdbcDriver"). -width/2-1.forName("sun. 26).fill(triangle).awt. Polygon triangle = new Polygon(). -width/2-1. //create a renderer painter.event. int width = (int) g.200)).drawString(wwp.drawString(wwp. //shadow g.con.iterator().11).jdbc. 20.WHITE). g. //set the waypoints painter.addPoint(11. Waypoint wp) { WikiWaypoint wwp = (mapapp. triangle.createStatement(). //text return false. jXMapKit1. //shadow g.drawString(wwp. try { Class.255.getSelectedItem().setAddressLocation(waypoints. -width/2.getTitle(). g.WikiWaypoint) wp.setWaypoints(waypoints). jXMapKit1. 10). Statement stmt=con. Connection con=null. ln.getFontMetrics().odbc. 10. 10. g.getTitle().0).setPaint(Color.getMainMap().getPosition()).getMainMap().getConnection("jdbc:odbc:amit").getWidth().add(new WikiWaypoint(lt.next(). 26-1).println(sqle.setPaint(Color.err.BLACK). 61 | P a g e .getStringBounds(wwp. JXMapViewer map. waypoints. triangle. } } t=list3. WaypointPainter painter = new WaypointPainter(). con=DriverManager.getMessage()).getTitle().close().addPoint(0.ActionEvent evt) { int i=0. jXMapKit1. //draw tab g. } } catch(SQLException sqle) { System.setPaint(new Color(0.getTitle(). width+10.0. t)). } private void adasdActionPerformed(java. } }).11). 26-1). g).setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g.repaint().setOverlayPainter(painter). //draw text w/ shadow g. triangle.fillRoundRect(-width/2 -5. g.addPoint(-11.

NodeList list = (NodeList) xpath.geonames.STRING)+" .err.println(sqle.println(sqle.getMessage()). Set<WikiWaypoint> waypoints = new HashSet<mapapp.getMessage()). 62 | P a g e .add(rs.org/wikipediaSearch?q=london&maxRows=10 URL url = new URL("http://ws.newInstance(). } catch(SQLException sqle) { System.getMessage()). here.evaluate("countryName/text()".Task<Object. for(int i = 0.getText()+"&lng="+jTextField2.executeQuery("Select * "+"from marker").new InputSource(url.evaluate("name/text()".geonames. } finally { try { if(con!=null) { con. } catch(ClassNotFoundException cnfe) { System. "+(String) xpath. Copy GUI state that // doInBackground() depends on from parameters // to GeoCodeTask fields. } } catch(SQLException sqle) { System. } rs.XPathConstants.application.dom. } } } @Action public Task geoCode() { return new GeoCodeTask(getApplication()).close(). super(app). i < list.println(e.item(i).jdesktop. Void> { GeoCodeTask(org. node.Node node = list.application.getString("title")).jdesktop.err.err. XPathConstants. i++) { org. } private class GeoCodeTask extends org.getMessage()).next()) { list3.ResultSet rs=stmt.newXPath().evaluate("//geonames//geoname". } @Override protected Set<WikiWaypoint> doInBackground() { try { // example: http://ws.w3c.Application app) { // Runs on the EDT. } catch(Exception e) { System. String title = (String) xpath.getLength().WikiWaypoint>().println(cnfe.NODESET).openStream()).close().err.getText()). XPath xpath = XPathFactory.org/findNearby?lat="+jTextField1. while(rs.

//draw tab g.setText(title). Polygon triangle = new Polygon(). //shadow g. please try another query" . XPathConstants."An Error has occured . 26-1).getMainMap().BLACK). // return your result } catch (Exception ex) { JOptionPane. XPathConstants.setWaypoints(waypoints). 10. -width/2-1.0).getTitle().repaint(). } jXMapKit1. g.getFontMetrics(). return waypoints. lon. int width = (int) g.getTitle(). triangle.getTitle().setPaint(Color.fillRoundRect(-width/2 -5. ex.200)). } 63 | P a g e . jXMapKit1. //draw text w/ shadow g. Waypoint wp) { WikiWaypoint wwp = (mapapp.NUMBER). //set the waypoints painter.add(new WikiWaypoint(lat.getTitle(). } }). 26-1). WaypointPainter painter = new WaypointPainter().WHITE). node.11).fill(triangle). jXMapKit1.setOverlayPainter(painter).getMainMap(). //text return false. "Error!!!".addPoint(-11.setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g.evaluate("lat/text()".JOptionPane. g. -width/2-1. waypoints. 20.getPosition()).iterator(). node. JXMapViewer map. title)).evaluate("lng/text()".drawString(wwp.255. //shadow g.addPoint(11.node. g. return null.ERROR_MESSAGE).getStringBounds(wwp.drawString(wwp.printStackTrace(). //create a renderer painter. g.setAddressLocation(waypoints.11).0. Double lat = (Double) xpath.showMessageDialog(jXMapKit1.setPaint(new Color(0.getWidth(). Double lon = (Double) xpath. 26). g). jLabel4. 10.STRING). XPathConstants. width+10.addPoint(0. triangle.next(). -width/2.drawString(wwp.WikiWaypoint) wp. 10). triangle.NUMBER).setPaint(Color.

geonames.removeAll().dom. i < list. Copy GUI state that // doInBackground() depends on from parameters // to SearchWikipediaTask fields."+title. Void> { SearchWikipediaTask(org. waypoints. } } NodeList list. list1.org/wikipediaSearch?q="+ jTextField3.getPosition()). node. node.XPathConstants. WaypointPainter painter = new WaypointPainter().getText()+"&maxRows=10").Task<Object. Set<WikiWaypoint> waypoints = new HashSet<mapapp.org/wikipediaSearch?q=london&maxRows=10 URL url = new URL("http://ws. Double lon = (Double) xpath. xpath = XPathFactory.w3c. list1.} @Override protected void succeeded(Object result) { // Runs on the EDT.geonames. node.NUMBER).STRING).application.NODESET).setWaypoints(waypoints). } private class SearchWikipediaTask extends org.item(i). 64 | P a g e . i).iterator().newXPath(). String title = (String) xpath.jdesktop. Double lat = (Double) xpath. lon. i++) { org.WikiWaypoint>().evaluate("title/text()".add(new WikiWaypoint(lat. here. for(int i = 0. XPathConstants.evaluate("lng/text()". XPathConstants.new InputSource(url.newInstance().openStream()).Node node = list.jdesktop.NUMBER). super(app). } @Override protected Set<WikiWaypoint> doInBackground() { try { // example: http://ws.setVisible(true). @Action public Task searchWikipedia() { return new SearchWikipediaTask(getApplication()). } jXMapKit1.next().Application app) { // Runs on the EDT.application. list = (NodeList) xpath. //set the waypoints painter. list1.add(i+1+". title)). XPathConstants.setAddressLocation(waypoints.getLength(). Update the GUI based on // the result computed by doInBackground().evaluate("//geonames//entry".evaluate("lat/text()". XPath xpath.

showMessageDialog(jXMapKit1.setOverlayPainter(painter).setPaint(new Color(0.setPaint(Color.BLACK).getMainMap().Application app) { // Runs on the EDT. //text return false. 26).getTitle(). } } @Action public Task findWeather() { return new FindWeatherTask(getApplication()). 26-1).application. Polygon triangle = new Polygon().setPaint(Color. //draw tab g.drawString(wwp. } }). int width = (int) g. // return your result } catch (Exception ex) { JOptionPane.11).drawString(wwp.//create a renderer painter. //shadow g.0. please try another query" .setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g.JOptionPane. } private class FindWeatherTask extends org. -width/2-1."An Error has occured .getTitle(). width+10. return waypoints. 10). //draw text w/ shadow g. jXMapKit1. return null.getFontMetrics().0).repaint().application. 26-1). Copy GUI state that 65 | P a g e . 10. Waypoint wp) { WikiWaypoint wwp = (mapapp.getWidth(). } } @Override protected void succeeded(Object result) { // Runs on the EDT. triangle.jdesktop. g.drawString(wwp. g).fillRoundRect(-width/2 -5. JXMapViewer map. Update the GUI based on // the result computed by doInBackground(). g.200)).Task<Object.addPoint(0. g.getTitle(). g.getStringBounds(wwp. 10.addPoint(-11.255. jXMapKit1. triangle. triangle. 20. ex. //shadow g. Void> { FindWeatherTask(org.WHITE).getTitle(). "Error!!!".WikiWaypoint) wp.getMainMap().jdesktop.addPoint(11.fill(triangle). -width/2-1.11). -width/2.printStackTrace().ERROR_MESSAGE).

STRING)).setText((String) xpath. triangle.dom.STRING)+"°C". XPathConstants.WikiWaypoint>(). XPathConstants.STRING)). } @Override protected Set<WikiWaypoint> doInBackground() { try { // example: http://ws. node. Set<WikiWaypoint> waypoints = new HashSet<mapapp.evaluate("windSpeed/text()". XPathConstants.addPoint(0. jLabel23. } jXMapKit1.newXPath(). NodeList list = (NodeList) xpath. 66 | P a g e .NUMBER). super(app). //set the waypoints painter. g. JXMapViewer map.evaluate("stationName/text()".setText((String) xpath.setText((String) xpath. triangle. title)).next().// doInBackground() depends on from parameters // to FindWeatherTask fields.evaluate("clouds/text()". triangle.iterator().evaluate("lng/text()".STRING)). jLabel24.newInstance(). i < 1.0.openStream()).evaluate("lat/text()".STRING)). Double lat = (Double) xpath.node.NUMBER).setWaypoints(waypoints). //create a renderer painter.getText( )+"&style=full").node. XPathConstants.node.addPoint(11.setText((String) xpath. WaypointPainter painter = new WaypointPainter().add(new WikiWaypoint(lat.setText((String) xpath.NODESET). here. String title = (String) xpath.geonames. //draw tab g.setPaint(new Color(0.11). XPathConstants.node.STRING)). node.new InputSource(url.fill(triangle). waypoints. lon.evaluate("//geonames//observation".setText((String) xpath.0). Double lon = (Double) xpath. XPathConstants. jLabel20.11).Node node = list. XPathConstants. i++) { org. jLabel22. jLabel21.node.org/findNearByWeather?lat=42&lng=-2&style=full URL url = new URL("http://ws.node.setAddressLocation(waypoints.255.addPoint(-11.evaluate("temperature/text()".getText()+"&lng="+jTextField9.geonames.evaluate("observationTime/text()". Waypoint wp) { WikiWaypoint wwp = (mapapp.node. XPathConstants.item(i). Polygon triangle = new Polygon().getPosition()). jLabel25.w3c.org/findNearByWeather?lat="+jTextField8.WikiWaypoint) wp.200)).setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g. XPathConstants. for(int i = 0.evaluate("temperature/text()".XPathConstants. XPath xpath = XPathFactory.STRING)).evaluate("humidity/text()".

printStackTrace(). Update the GUI based on // the result computed by doInBackground(). jLabel24. jXMapKit1.jdesktop.geonames. //shadow g.jdesktop.setText(""). 20.setText(""). return waypoints.JOptionPane. jLabel22.getFontMetrics().setOverlayPainter(painter). } @Override protected Set<WikiWaypoint> doInBackground() { try { // http://ws. //shadow g. 10).setPaint(Color.org/postalCodeSearch?postalcode=226016&maxRows=10&style=full 67 | P a g e . jLabel23. jLabel25.drawString(wwp.setPaint(Color. Void> { PostalSearchTask(org.drawString(wwp. ex.application."An Error has occured " + "because of ::\n(i)data for the coordinates not available or" + "\n(ii)Invalid coordinates". super(app). 26-1). g.repaint().getMainMap().fillRoundRect(-width/2 -5.setText(""). g. jLabel21. 26).getMainMap(). } } @Action public Task postalSearch() { return new PostalSearchTask(getApplication()). //draw text w/ shadow g.WHITE).getTitle().drawString(wwp. -width/2-1.setText("").setText(""). Copy GUI state that // doInBackground() depends on from parameters // to PostalSearchTask fields. here. -width/2. width+10.getTitle(). } }).ERROR_MESSAGE).Application app) { // Runs on the EDT. -width/2-1.showMessageDialog(jXMapKit1.getWidth(). "Error!!!". 10. // return your result } catch (Exception ex) { jLabel20. } private class PostalSearchTask extends org.getStringBounds(wwp.getTitle(). 10.application. //text return false. 26-1). JOptionPane.setText("").Task<Object. g.BLACK).getTitle().int width = (int) g. g). return null. jXMapKit1. } } @Override protected void succeeded(Object result) { // Runs on the EDT.

getPosition()).200)). //create a renderer painter.STRING)+".setPaint(Color. XPathConstants. Polygon triangle = new Polygon().openStream()). "+(String) xpath.i).NUMBER)."+(String) xpath. 10. if(i==0) { jTextField8.item(i).toString()). 20. 26-1). g. int width = (int) g.evaluate("lat/text()". i++) { org.STRING)+" .setText(lat. list2.getFontMetrics().newXPath(). for(int i = 0.setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g. triangle.getTitle().11).toString()).drawString(wwp. width+10.fill(triangle).evaluate("adminName2/text()". node.addPoint(0.getTitle().BLACK). //draw text w/ shadow g. } list2.setWaypoints(waypoints).removeAll(). //draw tab g. -width/2-1. node. XPathConstants. triangle.evaluate("adminName1/text()".evaluate("lat/text()". 26-1). XPathConstants. JXMapViewer map. //set the waypoints painter. XPathConstants. g.XPathConstants.w3c. node.STRING)+" .setText(lon. -width/2-1. Lat: "+(String) xpath.evaluate("name/text()".iterator(). XPathConstants. 10).URL url = new URL("http://ws. waypoints.getText()+"&maxRows=10&style =full"). jTextField9. NodeList list = (NodeList) xpath. Lon: "+(String) xpath.WikiWaypoint>().Node node = list.255.drawString(wwp. title)). XPathConstants. String title = (String) xpath.evaluate("name/text()".add(i+1+". node. 10. XPathConstants.geonames. g.11). g).new InputSource(url. node.0. //shadow 68 | P a g e . node. Waypoint wp) { WikiWaypoint wwp = (mapapp.NUMBER).WikiWaypoint) wp.newInstance().addPoint(-11.addPoint(11. Set<WikiWaypoint> waypoints = new HashSet<mapapp. "+(String) xpath. i < list. //shadow g.evaluate("lng/text()".evaluate("//geonames//code".next().STRING). } jXMapKit1.getLength().add(new WikiWaypoint(lat. Double lat = (Double) xpath. node.STRING). lon. XPath xpath = XPathFactory.fillRoundRect(-width/2 -5. node.org/postalCodeSearch?postalcode="+jTextField10. Double lon = (Double) xpath.getWidth(). triangle.0).evaluate("lng/text()".setAddressLocation(waypoints.getTitle(). XPathConstants.getStringBounds(wwp.setPaint(new Color(0.NODESET).dom. WaypointPainter painter = new WaypointPainter().STRING)+".

"An Error has occured . i++) { org. //text return false. // return your result } catch (Exception ex) { JOptionPane.NODESET).getText() ).w3c.evaluate("streetNumber/text()".setOverlayPainter(painter). } } @Action public Task forUS() { return new ForUSTask(getApplication()). -width/2. here. node. 26).451&lng=-122. 69 | P a g e . } @Override protected Set<WikiWaypoint> doInBackground() { try { // example: http://ws. "Error!!!". } private class ForUSTask extends org.jdesktop.dom.repaint().showMessageDialog(jXMapKit1. node. return null. XPathConstants. Set<WikiWaypoint> waypoints = new HashSet<mapapp. ex. jXMapKit1.application.WHITE). node.STRING)+".18 URL url = new URL("http://ws.evaluate("//geonames//address". } } @Override protected void succeeded(Object result) { // Runs on the EDT.getMainMap().org/findNearestAddress?lat="+jTextField1. jXMapKit1.new InputSource(url. Update the GUI based on // the result computed by doInBackground(). please try another query" . Copy GUI state that // doInBackground() depends on from parameters // to ForUSTask fields.getText()+"&lng="+jTextField2.newXPath().STRING)+" .ERROR_MESSAGE). return waypoints. NodeList list = (NodeList) xpath.getTitle().drawString(wwp. XPathConstants. XPath xpath = XPathFactory.newInstance().Task<Object. node.Application app) { // Runs on the EDT. XPathConstants. "+(String) xpath.STRING)+". "+(String) xpath.g.openStream()). "+(String) xpath. XPathConstants.geonames.getLength().geonames.STRING)+".Node node = list.WikiWaypoint>(). } }).jdesktop.org/findNearestAddress?lat=37. i < list.printStackTrace(). for(int i = 0.evaluate("placename/text()". "+(String) xpath. g.application.evaluate("adminName1/text()". super(app).item(i).XPathConstants.evaluate("street/text()".getMainMap().setPaint(Color. String title = (String) xpath.evaluate("adminName2/text()".JOptionPane. Void> { ForUSTask(org.

int width = (int) g. XPathConstants. triangle.addPoint(11.0.NUMBER). //shadow g.getMainMap(). } jXMapKit1. 20. jLabel26.setPaint(Color.fill(triangle).setText((String) xpath.setPaint(new Color(0.STRING)).evaluate("lng/text()".node. JXMapViewer map.add(new WikiWaypoint(lat.BLACK).WikiWaypoint) wp.STRING)+". g). node.evaluate("street/text()".fillRoundRect(-width/2 -5.getTitle(). if(i==0) jTextField10. g. XPathConstants. return waypoints.next(). g.evaluate("postalcode/text()". "+(String) xpath. -width/2-1. node.drawString(wwp. node. XPathConstants. node.evaluate("postalcode/text()". XPathConstants.setText((String) xpath.STRING)). 10). XPathConstants. width+10.STRING).evaluate("lat/text()".STRING)).getTitle(). XPathConstants. //draw text w/ shadow g. XPathConstants.setText((String) xpath. XPathConstants. 26-1). Polygon triangle = new Polygon().STRING)+". jLabel4.repaint(). //draw tab g. "+(String) xpath. jXMapKit1. "+(String) xpath. "+(String) xpath.getPosition()). // return your result 70 | P a g e .11). 10.drawString(wwp.STRING)). XPathConstants. XPathConstants.STRING)+". XPathConstants. node.STRING)+".11).getStringBounds(wwp. } }).iterator().0).setAddressLocation(waypoints. jLabel27.setPaint(Color.STRING)+". triangle. node. 10.addPoint(-11.evaluate("placename/text()". -width/2-1.STRING)+".WHITE).setRenderer(new WaypointRenderer() { public boolean paintWaypoint(Graphics2D g. XPathConstants. lon.evaluate("adminName2/text()". node. "+(String) xpath.evaluate("postalcode/text()". node. //set the waypoints painter.evaluate("countryCode/text()". //create a renderer painter.NUMBER).200)). Double lon = (Double) xpath. triangle. title)).getFontMetrics().evaluate("countryCode/text()".setOverlayPainter(painter).255. waypoints. jXMapKit1. g.addPoint(0. node. XPathConstants. PIN : "+(String) xpath. 26).evaluate("adminName1/text()". //text return false. node. node.evaluate("streetNumber/text()". Double lat = (Double) xpath.getTitle(). g.getTitle(). -width/2. node. WaypointPainter painter = new WaypointPainter().getWidth().drawString(wwp. Waypoint wp) { WikiWaypoint wwp = (mapapp. //shadow g.setText((String) xpath. 26-1).setWaypoints(waypoints).getMainMap().

swing.JLabel jLabel18.swing. "Error!!!".JButton jButton2.swing. private javax.JButton adasd.JLabel jLabel24.JPanel jPanel1.JLabel jLabel25. } } @Override protected void succeeded(Object result) { // Runs on the EDT.ERROR_MESSAGE). private javax. private javax.JLabel jLabel2.JLabel jLabel14.JLabel jLabel1.swing. private javax.JLabel jLabel27. private javax.swing.JLabel jLabel21. private javax.swing.swing.JButton jButton6. ex.JLabel jLabel15.JButton jButton7.swing.JLabel jLabel13. private javax. private javax. private javax.JButton afs. private javax. private javax.JLabel jLabel4.swing. private javax.swing. private javax.swing.swing.swing.swing.JPanel dfty. please try another query" . private javax.swing.swing. private javax.swing. private javax.swing.swing. private javax.printStackTrace().swing. private javax.JPanel gyu.JLabel jLabel26.} catch (Exception ex) { JOptionPane.JLabel jLabel3.swing.JLabel jLabel22. private javax.swing.JLabel jLabel6. private javax.JLabel jLabel12.JLabel jLabel17. private javax.JLabel jLabel16.JLabel asfa. private javax.JButton jBn4.swing.swing.swing.JOptionPane.do not modify private javax. private javax.JLabel jLabel19. private javax.swing."An Error has occured .JButton jButton5.swing.showMessageDialog(jXMapKit1.JLabel jLabel8.swing.JLabel jLabel23.swing.swing.swing.swing. private javax.JLabel jLabel11.swing.swing. private javax.JLabel adgf.JLabel jLabel20. } } // Variables declaration . Update the GUI based on // the result computed by doInBackground(). private javax. private javax.JLabel gj. private javax. private javax.swing. private javax.swing. private javax. return null.JLabel jLabel5. private javax.swing. private javax. private javax. private javax.JButton jButton1. private javax. 71 | P a g e .swing. private javax.JLabel jLabel7.swing.

JLabel statusAnimationLabel. private javax. private final Icon idleIcon.swing.JPanel jPanel9. private final Icon[] busyIcons = new Icon[15].JTextField jTextField2. private javax. // End of variables declaration private final Timer messageTimer. private javax.swing.List list1.awt. private javax. private javax.swing. private javax. private javax. } 72 | P a g e .swing.JTextField jTextField1. private java.swing. private java. private javax. private java. private javax. private javax.swing. private javax. private org.swing. private javax.JTextField jf1.swing. private final Timer busyIconTimer.JPanel jPanel7.swing.JLabel statusMessageLabel.JPanel jPanel3.JXMapKit jXMapKit1.swing. private javax. private javax. private int busyIconIndex = 0. private javax.JTextField jTextField3. private javax.private javax. private JDialog aboutBox. private javax.JPanel jPanel4.JButton ryte. private javax. private javax. private javax. private javax.swing.JTextField jTextField10.swing.JTextField jTextField8.JLabel sgd.swing.swing.swing.swing.swing.JButton sdf.JTextField jf2.List list3. private javax.swing. private javax.JPanel statusPanel.swing.awt. private javax.JPanel jPanel2.swingx.swing.swing.JMenuBar menuBar.swing.awt.swing. private javax.swing.JProgressBar progressBar.jdesktop.swing.JTextField jTextField9.swing. private javax.List list2.swing.JPanel jPanel8.JTextField jf3.JTabbedPane jTabbedPane1.JLabel ser.JTabbedPane jTabbedPane2.JPanel mainPanel.

} /** * Creates a new instance of Waypoint at the specified * latitude and longitude * @param latitude new latitude * @param longitude new longitude */ public WikiWaypoint(double latitude. } public String getTitle() { return title.Waypoint. /** * Creates a new instance of Waypoint at lat/long 0. import org.String t) { position=new GeoPosition(latitude. title=t. private String title./*WikiWaypoiont.GeoPosition.longitude). double longitude.position = coord. } /** * Creates a new instance of Waypoint at the specified * GeoPosition * @param coord a GeoPosition to initialize the new Waypoint */ public WikiWaypoint(GeoPosition coord) { this. } 73 | P a g e .mapviewer. } /** * Get the current GeoPosition of this Waypoint * @return the current position */ @Override public GeoPosition getPosition() { return position.mapviewer.jdesktop. 0).swingx. import org. /** * @author amit singh */ class WikiWaypoint extends Waypoint { private GeoPosition position.swingx.java package mapapp.jdesktop.0 */ public WikiWaypoint() { position=new GeoPosition(0.

/** * Set a new GeoPosition for this Waypoint * @param coordinate a new position */ @Override public void setPosition(GeoPosition coordinate) { GeoPosition old = getPosition(). old. this. getPosition()).position = coordinate. } } 74 | P a g e . firePropertyChange("position".

OUTPUT OF THE MODULES Fi st un ¡   75 | P a g e .

Map De arte GUI ¥ ¤ £¢ Pass r Dialog 76 | P a g e .

Wikipe ia Search ¦ Weather Search 77 | P a g e .

Add a Marker etrieve a Saved Marker § 78 | P a g e .

Geocode (Postal Code to Lat/Long) everse Geocode(Lat/lng to address)-For US ¨ 79 | P a g e .

everse Geocode(Lat/lng to address)-General About Dialog Box © 80 | P a g e .

digits E5=blank/space valid invalid valid valid invalid 81 | P a g e .TESTING McCabe Cyclomatic Complexity Complexity=18 Add Marker at New Place 1. Name of Location DESCRIPTION This function has been used to enter the name of the new place. Equivalence classes: E1 = length of the name between 0 and 50 E2=length of name>50 E3=include special characters E4=include alphanumeric.

digits valid invalid invalid invalid invalid TEST CASES TEST ID 1 2 3 4 5 LATITUDE 50.02 xvz -567.0 *&% EXPECTED OUTPUT Valid Invalid Valid Invalid Invalid 82 | P a g e . Equivalence classes E1 = floating type number between -90 and 90 E2 = floating type number less than -90 E3 = floating type number more than 90 E4=include special characters E5=include alphanumeric.TEST CASES TEST ID 1 2 3 4 5 NAME abc xvz«««(upto 51) (blank) 567 *&% EXPECTED OUTPUT Valid Invalid Invalid Valid Valid Latitude of the location DESCRIPTION: - This function has been used to enter the latitude of the new place.

digits valid invalid invalid invalid invalid TEST CASES : TEST ID 1 2 3 4 5 LATITUDE 173215 xvz -567.0 *&% EXPECTED OUTPUT Valid Invalid Invalid Invalid Invalid 83 | P a g e .Postal code DESCRIPTION - This function has been used to enter the postal code. Equivalence classes E1 = integer more than 0 E2 = floating type number E3 = any number less than 0 E4=include special characters E5=include alphanumeric.

99 (VALID) 0 +90 89.01(INVALID) -179.BOUNDARY VALUE ANALYSIS 1) LATITUDE -90 -90.01 (INVALID) 2) LONGITUDE -180 -180.99 (VALID) 0 180 179.01 (INVALID) 3) POSTAL CODE 0 -1(INVALID) 1(VALID) 84 | P a g e .01(INVALID) -89.99(VALID) 180.99(VALID) 90.

FUTURE ANALYSIS INNOVATIVE AND USEFULNESS In today¶s changing environment there is a high need for travelling a lot in major metro cities and across the country but having the information of the scenario too large and complex it becomes too difficult to remember the each and every information regarding the location like maps or roads for where we are going and like the what are the current weather conditions there. AS A MOBILE APPLICATION The future scope of the project is also for the making such a mini application for the light processing devices like mobile phone for accessing the devices also.net/ http://forums.geonames.org ³JAVA COMPLETE REFERENCE´ is a Java text book by Herb Schidlt ³DATABASE SYSTEM CONCEPTS´ is a database text book by Korth. So this Map-App mapping application not only provides the user the location of the target place and also provides the other information about that place like weather condition. The other benefit of this project is that this is very light weight computing application that runs very efficiently on the low configuration computers also.net www. REFERENCES https://swingx-ws. so the main objective behind the development of this project was to develop to such a light weight mapping application that can work efficiently and properly on the low configuration computers and having connected by a very low network internet connection. 85 | P a g e .java.java.dev.

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master Your Semester with a Special Offer from Scribd & The New York Times

Cancel anytime.