Instructor



2 – D BARCODE DECODERInstructorDr. Kwok-Bun YueMentorMr. Dilhar De SilvaMr.Bruce BrennerProject Team Members – TEAM 7Dawood MoazzemVindhya KacharajuNikhil SreedharaRaunaq NilekaniZahabia DamaniaSemesterSpring 2010Report Date: 27 April 2010ACKNOWLEDGEMENTOur sincere thanks to Dr. Kwok-Bun Yue for giving us the most effective and valuable guidance that gave us motivation to strive for the completion of the project.We are grateful to our esteemed mentors Mr. Dilhar De Silva and Mr. Bruce Brenner for giving us an opportunity to work on this project. We heart fully thank them for inspiring us and giving us their constructive feedback during weekly mentor meetings which helped us better understand the software engineering process that is involved with real world product development.We would also like to thank our friends and all those people who were directly or indirectly involved in this project.ABSTRACTIn the financial world, identity theft is a serious issue, with over 27.3 million victims; causing losses in the upwards of billions of dollars to businesses. This project aims to design and develop a software product that would help combat identity theft and fraud by scanning 2D barcodes on ID cards. Our project is run by the specific requirements of Minicheck OCR and Atlink Communications. Minicheck OCR is currently using a commercial barcode scanner for decoding a 2-D Barcode data. This is not cost-effective and is also creating issues with licensing. So, we are trying to develop alternative software that would contain an open source 2 D Barcode decoding library.The main requirement is for the product to decode PDF417 barcodes commonly found on ID cards, and present the decoded data in a human-readable form to the user. The user may use this data for verification purposes. To read and decode PDF417 barcodes, an open source library is to be used, preferably with more capabilities than just decoding PDF417 barcodes (for flexibility and extensibility). The stakeholders for this project would also like the ability to save data (such as barcode image decoded data) to a database.The product is a 3-tier system, with the client application being developed in a RIA (Rich Internet Application) language such as Flex. The database to store the data will be in MySQL which exists on the server side. The application is a Web client and Server application. The barcode is not parsed locally as we would not like to face any issues with the security and performance of the software.This project shall be carried out in accordance with RUP (Rational Unified Process), with the possibility of a TDD (Test Driven Development) methodology. The RUP phases will contain 1-week iterations. Versioning, documentation, online meetings and collaboration will be carried out using Google Wave.Contents TOC \o "1-3" \h \z \u Instructor PAGEREF _Toc260149222 \h 1Mentor PAGEREF _Toc260149223 \h 1Project Team Members – Team 7 PAGEREF _Toc260149224 \h 1Semester PAGEREF _Toc260149225 \h 1Acknowledgement PAGEREF _Toc260149226 \h 2Abstract PAGEREF _Toc260149227 \h 31.Introduction PAGEREF _Toc260149228 \h 71.1 Purpose PAGEREF _Toc260149229 \h 71.2 Scope PAGEREF _Toc260149230 \h 72.Software Development Model PAGEREF _Toc260149231 \h 83.Design and Implementation PAGEREF _Toc260149232 \h 103.1 Presentation Layer: PAGEREF _Toc260149233 \h 113.2 Service Layer PAGEREF _Toc260149234 \h 113.3 Business Layer PAGEREF _Toc260149235 \h 113.4 Data Layer PAGEREF _Toc260149236 \h 124.Technical Details PAGEREF _Toc260149237 \h 124.1 Technologies used PAGEREF _Toc260149238 \h 124.1.1Adobe Flex PAGEREF _Toc260149239 \h 124.1.2ZXing PDF-417 decoding library PAGEREF _Toc260149240 \h 124.1.3MySQL PAGEREF _Toc260149241 \h 134.1.4XML PAGEREF _Toc260149242 \h 134.2 Rationale for tool selection. PAGEREF _Toc260149243 \h 135.Evaluation PAGEREF _Toc260149244 \h 146.Conlusion PAGEREF _Toc260149245 \h 157.References PAGEREF _Toc260149246 \h 168.Appendices PAGEREF _Toc260149247 \h 16Appendix A: Project Management and Team Information PAGEREF _Toc260149248 \h 16Team Roles and Role Assignment PAGEREF _Toc260149249 \h 16Schedule PAGEREF _Toc260149250 \h 17Appendix B: Major Tasks and contributions PAGEREF _Toc260149251 \h 18Project Management: PAGEREF _Toc260149252 \h 18User Interface Design and Implementation PAGEREF _Toc260149253 \h 19Server Side Design and Implementation PAGEREF _Toc260149254 \h 19Integration of Components PAGEREF _Toc260149255 \h 19Technical Report PAGEREF _Toc260149256 \h 19Research and Tools Selection PAGEREF _Toc260149257 \h 20Appendix C: Software Requirements Specification PAGEREF _Toc260149258 \h 20User Login PAGEREF _Toc260149259 \h 20Browse barcode PAGEREF _Toc260149260 \h 20Browse face PAGEREF _Toc260149261 \h 21Start decode process PAGEREF _Toc260149262 \h 21Decode barcode data PAGEREF _Toc260149263 \h 21Populate in XML Format PAGEREF _Toc260149264 \h 22Usability PAGEREF _Toc260149265 \h 22Appendix D: Detailed Design PAGEREF _Toc260149266 \h 22Presentation Layer PAGEREF _Toc260149267 \h 22Business Layer and Service Layer PAGEREF _Toc260149268 \h 23Data Layer PAGEREF _Toc260149269 \h 27Entity Layer PAGEREF _Toc260149270 \h 29Exceptions PAGEREF _Toc260149271 \h 32Appendix E: Diagrams PAGEREF _Toc260149272 \h 33Sequence Diagram For Overview PAGEREF _Toc260149273 \h 33Sequence Diagram for Decode PAGEREF _Toc260149274 \h 34Class Diagram for the application PAGEREF _Toc260149275 \h 34User Interface PAGEREF _Toc260149276 \h 35Appendix F: Commercial Barcodes PAGEREF _Toc260149277 \h 35Problem statement PAGEREF _Toc260149278 \h 35Test Cases Obtained PAGEREF _Toc260149279 \h 36Appendix G: Google Wave PAGEREF _Toc260149280 \h 36Communication and Collaboration PAGEREF _Toc260149281 \h 36Lessons Learnt PAGEREF _Toc260149282 \h 37Appendix H: Communication with ZXING PAGEREF _Toc260149283 \h 38Research PAGEREF _Toc260149284 \h 38Recommended Solution PAGEREF _Toc260149285 \h 38Introduction1.1 PurposeThis project aims at building an application where the user can get human readable information by providing a scanned copy of 2-D barcode, especially from a driver's license. This is achieved using an open-source 2D bar code decoding library.The main objective of the 2D bar coding project is to move away from an existing third party software and make use of an open source bar code decoding library. In this project, the user is required to upload the front and back image of a driver license. Once the image is uploaded, the application decodes the barcode and presents all the information contained within the barcode back to the user in a well designed template along with the front side of the driver license.This application will eliminate the need of Atlinks Communication Inc.to rely on the support of a third party for its services.1.2 ScopeThe bar code decoding project can be integrated with a larger application to provide additional information along with the driver license holder information. This project is designed to conform to the AAMVA standards. A web based GUI client is developed to demonstrate the functionality. This application accepts an image file and returns information in the form of raw text, parsed text and XML format. This allows easy integration of the project to various other applications.Software Development ModelRational Unified Process (RUP) is used as the software engineering process to develop the 2D bar code decoding application. The primary goal of the project is to build an application that decodes a 2D bar code of a driver license and produces human readable output. “RUP provides a disciplined approach to assigning tasks and responsibilities within a development organization. Its goal is to ensure the production of high-quality software that meets the needs of its end-users, within a predictable schedule and budget.”[2]The goal of RUP is to make effective use of the Unified Modeling Language, increase team productivity, and follow the best practices in modern software development. RUP is a configurable process that fits in development of small, medium and large size applications. Many tools are available that automate the RUP process. The figure below shows the RUP phases and its work flows:Figure SEQ Figure \* ARABIC 1: Rup phases and WORKFLOWS [2]There are 4 phases in the RUP process: Inception, Elaboration, Construction and Transition. Each phase can have one or more iterations. The workflows associated with each phase are: Business Modeling, Requirements, Analysis and Design, Implementation, Test, Deployment, Configuration and Change Management, Project Management and Environment. Each phase has a specific purpose and is concluded with a well-defined milestone.In the development of 2D bar code decoding application there were three iterations of the Inception phase where the requirements and risks related to the project were identified. Elaboration phase had three iterations; these iterations included identifying which open source 2D bar code decoding library would work best according to our requirements and running test cases through the library. The third phase which is the Construction phase had six iterations that included the implementation of the various components of the bar code decoding application.We do not have any tool that describes how to use Rational Unified Process. We have set up our Microsoft project plan by delegating each of the phases with iterations. Design and ImplementationThe architecture of the 2D bar code decoding application is a standard three tier architecture. The application design makes use of the component based architecture where components communicate with each other. The Architecture Diagram of 2D bar code decoding application is as shown below:Figure SEQ Figure \* ARABIC 2 : Architecture Diagram of 2D Bar code decoding applicationThe project architecture is divided into four components:3.1 Presentation Layer: The presentation layer constitutes the user interface of 2D bar code decoding application that is built using the FLEX technology. Flex is a free, open source framework for building rich internet applications. The user interface of 2D bar code decoding application consists of a page that allows the user to login to the application and upload the front and back images of a driver license. It also consists of a page that shows the results of the decoded data in raw text, parsed text and XML format.3.2 SERVICE LayerThis layer receives the information from the client side which is the presentation layer and it assigns functionality to be performed to each of the entities through the business layer. So, the services are performed using different entities like the barcode entity, driver’s license entity, parsing entity and the ZXING library entity.3.3 business Layer The business layer is a core component of the 2D bar code decoding application. It is where the actual functionality takes place. The requests which come from the service layer are processed in the business layer and the results are obtained which are further sent back from the server to the client tier to produce the output on the User Interface.3.4 DATA Layer The data layer takes care of storing the 2D bar code information in the MySQL database; provides bar code information to be displayed in tabular form and also provides information to be displayed in XML format.Technical Details 4.1 Technologies usedThis section will detail the technologies used to build this application and the rationale for deciding on the technologies compared to the alternatives.Adobe FlexAdobe? Flex is a framework from Adobe to build Rich Internet Applications (RIA). This toolkit allows the developers to develop application that run on the Adobe Flash Platform to deliver engaging interfaces to the users over internet. One of its major advantages is its platform neutrality and allows the same applications to run in browsers on Windows, Mac OS and Linux.ZXing PDF-417 decoding library ZXing (pronounced as Zebra Crossing) is an open source 1D/2D bar code image processing library implemented in Java. This 2D bar coding library is comprises of different set of barcode standards like PDF-417, Data Matrix, QR Code etc. However, PDF-417 is an alpha quality release. PDF-417 is a two-dimensional barcode which are store large amounts of data.MySQL MySQL is a very powerful open-source Relational Database Management System (RDBMS). In this application, this system is used to store the driver license holder information. Also the various AAMVA tags are stored in this database. The use of this software is mandated by the requirements.XMLXML is a set of rules used to encode electronic documents. Since the application is structured as a set of loosely coupled components, a common XML schema has been designated so that changes can be made to one component without much impact to the other components.4.2 Rationale for tool selection.From the requirements, it was clear that the application should perform five major tasks,Interact with users,Extract the raw text information from the uploaded barcode image.Convert raw text into parsed data,Store the information in a databaseDisplay decoded results in XML format.In order to accomplish our first requirement, a good user interface was needed. A user interface can only succeed when it ultimately simplifies the task of the end-user. Since the 2D barcode decoding application is intended to replace the existing commercial application, Adobe Flex has been chosen to build the rich client interface. Selecting a tool for the second requirement was the biggest challenge. The main aim was to move away from the existing commercial barcode decoding application. The only solution was to go with an open source PDF-417 bar code decoding library that performs the same function as its commercial counterpart. As the only open source library that lived upto the requirements was ZXING; it was chosen.In order to satisfy the third requirement, a parser is implemented using Java, that parses the raw text received from the open source ZXING library using the AAMVA standards.In terms of efforts expended for tool selection, perhaps the information storage was the easiest to select as the requirement mandated the use of MySQL server. Since this was a well-thought out choice as the 2D bar code decoding application should be compatible with existing systems, it is chosen.The fifth requirement was to display results in XML format. Here the decoded data was first put into a XML string and then the result was generated by matching tag-value pairs. EvaluationThe original goals of the project as defined at the kick-off are to be able to correctly decode a PDF-417 bar code in to raw text using an open source library and parse this raw text using a parser into human readable output that follows the XML format and conforms to AAMVA standards. In the current state, the application can take input in the form of a driver license 2D barcode image and decode it successfully using an open source PDF-417 decoding library called ZXING.The solution is designed to be highly modular. It is designed such that, for example, if in future ZXING is modified and improved to have better decoding capabilities, or another decoding library is to be used for decoding; the java parser can be simply added onto another library to display parsed results from the raw text generated by that library. This de-coupled nature of the solution helped the team to work on the components in parallel and made it easy to integrate the components developed using different technologies. The UI is built in Flex, the AAMVA parser is written in Java and the database runs on MySQL.A number of test cases were performed on the application and we could say that the ZXING bar coding library have problem with the error correction and identifying barcodes. A research on a set of commercial barcodes is also done. This is explained in the Appendices F and H. ConlusionThe solution is able to decode a PDF-417 bar code using an open source bar code decoding library into raw text and the AAMVA parser is able to parse this raw data into human readable text using the XML format. Considering that this was the major requirement for this application, it can be considered that most of the goals of the project are achieved. Some of the future enhancements possible are to improvise the open source ZXING library to have better decoding capabilities. References[1] AtLink Communications Inc. "User Requirement Document - Capstone Spring 2010." Capstone Information Page. [2] IBM Rational Software. "Rational Unified Process : Best Practices for Software Development Teams." IBM DeveloperWorks: Rational. January 10, 2003. [3] ZXING multi-format 1D/2D barcode image processing library. A: Project Management and Team InformationTeam Roles and Role AssignmentTeam Leader (Dawood): The team leader is responsible for organizing the team work and ensures that the team progress satisfies the mentors and the professor. The team leader along with the project members and mentors of the project decides on the time line for each of the tasks related to the project.Webmaster (Vindhya): The webmaster is responsible for the development and maintenance of the project website.Developer (Dawood, Vindhya, Nikhil, Raunaq and Zahabia): The role of a developer is to design, develop and test the components of the software system assigned to him/her. DBA (Dawood, Vindhya and Nikhil): The role of a database administrator is to design, document, implement and manage the project database.Technical Writer (Vindhya, Nikhil and Zahabia): The technical writer is responsible for creating the documents related to the project such as Software Requirements Specification, Use Case and Sequence Diagrams, Meeting Minutes, Design Document and the Technical Report. ScheduleRational Unified Process (RUP) is used as the software engineering process that provides a disciplined approach in assigning tasks and responsibilities within a development organization. Project Management is one of the core workflows in RUP that provides practical guidelines for planning, staffing, executing, and monitoring project and a framework for managing software intensive projects. The timelines for each task is reviewed and modified in each phase of RUP. The detailed time management plan for the project is shown in the screen shot below: Figure SEQ Figure \* ARABIC 3: Project PLANAppendix B: Major Tasks and contributionsProject Management: Dawood (20%) Vindhya (20%)Nikhil (20%)Raunaq (20%)Zahabia (20%) User Interface Design and ImplementationDawood (20%) Vindhya (20%)Nikhil (20%)Raunaq (20%)Zahabia (20%) Server Side Design and ImplementationDawood (20%) Vindhya (20%)Nikhil (20%)Raunaq (20%)Zahabia (20%) Integration of ComponentsDawood (20%) Vindhya (20%)Nikhil (20%)Raunaq (20%)Zahabia (20%) Technical ReportDawood (20%) Vindhya (20%)Nikhil (20%)Raunaq (20%)Zahabia (20%) Research and Tools SelectionDawood (20%) Vindhya (20%)Nikhil (20%)Raunaq (20%)Zahabia (20%) APPENDIX C: Software Requirements SpecificationUser Login System shall allow user to enter a valid username and password.System shall prompt a message to the user when authenticated.System shall allow the user to access the decoder page to browse a barcode.System shall prompt an error message when an invalid user logs in.Browse barcodeSystem shall allow User to browse computer and select a supported file.User shall choose a file.User shall have the capability to discard the selected file and select another file.If the selected file is not supported, then the system shall alert the User.Browse faceSystem shall allow User to browse computer and select a supported file.User shall choose a file.User shall have the capability to discard the selected file and select another file.Start decode processSystem shall allow User to initiate the decoding process.Client shall send the decoding request to the server.Server shall perform decoding operation.Server shall send the result to the User that shall be displayed on User Interface.If the User is not allowed to initiate decoding process, System shall prompt user with error message.Decode barcode dataThe client shall send a decoding request to the server.Server shall perform the decoding action and save the result to an XML String.The data shall be sent to the client.The user shall view the decoded data on the client machine's browser.Server shall prompt the client with an error message when an error occurs.Populate in XML FormatThe Server shall save the result obtained in an XML String.The Client shall populate the obtained result on the User Interface in XML Format.Usability The time taken to learn technologies that are required to develop the application and the time to develop the application itself are detailed in the Microsoft Project Plan document.APPENDIX D: Detailed DesignPresentation LayerComponentsThis Layer consists of Login form and Upload Barcode as the components.LOGIN FORMThis form displays the login page in the User Interface which lets any authenticated user sign in to get the functionality of the 2D Barcode Scanner. MethodsbtnLogin_clickHandler() Any authenticated user is given access to the decoder once a valid user logs in. A remote object named UserRO is called to check the validity of a user.Upload barcodeIn this component, the user is allowed to browse a barcode as a scanned image and also the front side which is the face of the barcode and upload it. Methods addFiles() Selects a file from the client machine which represents a 2 D Barcode scanned from a Drivers License. addFace() Selects a file from the client machine which represents face of a Drivers License. uploadFile() Saves the barcode file in a byte format and sends it to the server to decode the barcode.BUSINESS Layer AND SERVICE LAYERComponentsThe Business Layer consists of the Decoder, File Saver, Parser, Reader Barcode, User Barcode and XML Generator classes that implements the Business layer interface. Some of the components of the Business layer are also used in the Service Layer such as the Reader Barcode and User Barcode.DECODERThe decoder class defines the following methods:Methodspublic Result tryDecode(HYPERLINK "" \o "class or interface in java.awt.image"BufferedImage?image, Hashtable<HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\com\\google\\zxing\\DecodeHintType.html" \o "class in com.google.zxing"DecodeHintType,Object>?hints)This method accepts two parameters, the buffered image and the hints which are represented as a hash table. The class Result encapsulates the result of decoding a barcode within an image.FILE SAVERThis class saves the received image on the server. The file saver class defines the following methods:Methodspublic String saveImage(byte[]?fileByteArray, String?fileName,HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\UserEntity.html" \o "class in minicheck.server.entities"UserEntity?user)This method accepts three parameters, the file in the form of bytes, the filename as a string and the user entity which validates the user.parserThe parser class is a Mini Check specific parsing class that takes the decoded Result from ZXING decoding a barcode, and tries to parse the raw text output into an AAMVA format. Once all elements have been found, the parser will try and extract data for each of the tags using the AAMVA set standards.Methodspublic Result getDecodedResult()This method gives the decoded result obtained from the ZXING library to the result class.public void setDecodedResult(Result?decodedResult)This method sets the decoded result by passing the decoded data obtained from the result class. public ResultEntity tryParse(Result?decodedResult, boolean?try_harder)This is the main class to Try and parse. AAMVA implements very simple error detection. Type of parsing attempted depends on the try_harder parameterWhen true, this method of parsing does not look at header information and viceversa.READER BARCODEThe reader barcode is used to get the result after decoding. This class defines the following methods:Methodspublic ResultEntity read(byte[]?fileByteArray, String?fileName,UserEntity?user)This method accepts three parameters, the file in the form of bytes, the filename as a string and the user entity which validates the user. It is used to get the parsed data from the ZXING library.public String readToXML(byte[]?fileByteArray, String?fileName,UserEntity?user)This method accepts two parameters, the criteria for the search and the value for the search. This method is used to retrieve the data in the XML format and display on the User Interface.USER BARCODEThe user barcode class checks for the authentication of a user. It defines the following methods:Methodspublic UserEntity UserLogin(HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\UserEntity.html" \o "class in minicheck.server.entities"UserEntity?userData)This method accepts the user data provided by the user as input and checks the authentication of a user by calling the UserEntity class.GENERATE XMLThe generate XML class is used to get the XML format in the form of a string. It defines the following methods:Methodspublic String generateXML(HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\ResultEntity.html" \o "class in minicheck.server.entities"ResultEntity?parsedResult)This method allows the user to generate an XML string from the parsed result obtained after getting the decoded result.DATA LAYERComponentsThe Data Layer consists of the classes that would comprise of the editing the data within the database. This layer includes the HeaderDAC, TagsDAC and UserDAC components:HEADERDACThe headerDAC class defines the following methods:Methodspublic ArrayList<HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\HeaderFieldEntity.html" \o "class in minicheck.server.entities"HeaderFieldEntity> GetHeaderFields(int?AAMVAVersion)This method is used to return an array list taking each of the header field as per the AAMVA standards.TAGSDACThe tagsDAC class defines the following methods:Methodspublic TagEntity GetTag(String?Elem_ID)This method is used to return the tag entity by considering each of the Element ID provided in the database as per the AAMVA standards.public ArrayList<HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\TagEntity.html" \o "class in minicheck.server.entities"TagEntity> GetAllTags()This method is used to return the array list comprising of all the tags. The tag entity class comprises of all the tags in the database with its get and set methods.USERDACThe userDAC class defines the following methods:Methodspublic UserEntity GetUserData(HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\UserEntity.html" \o "class in minicheck.server.entities"UserEntity?userData)This method is used to retrieve the user data from the database.public boolean ModifyUserData(HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\UserEntity.html" \o "class in minicheck.server.entities"UserEntity?userData)This method is used to modify the user data from the database. public UserEntity AddUserData(HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\UserEntity.html" \o "class in minicheck.server.entities"UserEntity?userData)This method is used to add the user data from the database.public boolean DeleteUserData(HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\UserEntity.html" \o "class in minicheck.server.entities"UserEntity?userData)This method is used to delete the user data from the database. ENTITY LAYERComponentsThe Entity Layer consists of the Header Field, Header Info, Parsed Element, Result, SubfileInfo, Tag and User entity classes that implement the Entity layer interface. HEADER FIELD ENTITYThe header field entity defines the methods with the corresponding get and set methods of the Field name, Field bytes, Field value and Field Descriptor. All the functions have the same format as shown in the example below:Methodspublic int getFieldBytes()This method returns an integer value representing the number of bytes of the header field.public void setFieldName(String value)This method sets the header filed value to the string associated with it. HEADER INFO ENTITYThe header info entity defines the methods with the corresponding get and set methods of the AAMVA version and header fields. All the functions have the same format as shown in the example below:Methodspublic int getAAMVAVersion()This method returns an integer value representing the AAMVA version of the header field noticed.public void setHeaderFields(HYPERLINK "" \o "class or interface in java.util"ArrayList<HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\HeaderFieldEntity.html" \o "class in minicheck.server.entities"HeaderFieldEntity>?value)This method sets the header filed value to the array list associated with it. PARSED ELEMENT ENTITYThe parsed element entity defines the methods with the corresponding get and set methods of the parser. This allows to get or set the tags, data positions and DL tags. All the functions have the same format as shown in the example below:Methodspublic TagEntity getDlTag()This method returns an DL tag which represents the header. public void setDataStartPosition(int?DataStartPosition)This method sets the data start position to locate the data after the header is found. RESULT ENTITYThe result entity defines the methods with the corresponding get and set methods of the results. This allows to get or set the parsed elements, raw text and comments. All the functions have the same format as shown in the example below:Methodspublic String getRawText()This method returns the raw text obtained after the decoding is performed. public void setParsedElements(HYPERLINK "" \o "class or interface in java.util"ArrayList<HYPERLINK ":\\DevTools\\Projects\\Minicheck\\MinicheckServer\\doc\\minicheck\\server\\entities\\ParsedElementEntity.html" \o "class in minicheck.server.entities"ParsedElementEntity>?ParsedElements)This method sets the parsed elements from the array list after the parser identifies the information from the DL tags.TAG ENTITYThe tag entity defines the methods with the corresponding get and set methods of the tags. This allows to get or set the element ID, element name or element descriptor. All the functions have the same format as shown in the example below:Methodspublic String getElem_ID()This method returns the raw element ID from the database in the form of a string. public void setElem_Name(String?Elem_Name)This method sets the element name in the database taking a string as input.USER ENTITYThe user entity defines the methods with the corresponding get and set methods of the user details. This allows to get or set the Login ID, Password and the UID . All the functions have the same format as shown in the example below:Methodspublic String getLogin_ID()This method returns the login ID from the database in the form of a string. public void setPassword(String?Password)This method sets the password to the corresponding user and saves it in the database taking a string as input.EXCEPTIONSComponentsThis Exceptions criterion consists of a set of four exceptions which are specified as follows.HEADER NOT FOUND EXCEPTIONThis exception is raised when the header will not be found once the barcode is uploaded to get the result from the server.public HeaderNotFoundException()INVALID LOGIN EXCEPTIONThis exception is raised when an invalid user try to authenticate.public InvalidLoginException()TAG NOT FOUND EXCEPTIONThis exception is raised when a tag corresponding to the database is not found. This is to get the data in the XML format.public TagNotFoundException()USER NOT FOUND EXCEPTIONThis exception is raised when a corresponding user is not present in the database and when no access capabilities are defined for that particular user.public UserNotFoundException()appendix E: DiagramsSEQUENCE DIAGRAM FOR THE OVERVIEWSequence Diagram for DECODE CLASS DIAGRAM FOR THE APPLICATIONUSER INTERFACE appendix F: COMMERCIAL BARCODESPROBLEM STATEMENT:We are currently using the open source ZXING 2-D bar coding library. However, following are the problems that we have encountered:ZXING does not provide consistency in detecting bar codes.ZXING does not perform error correction in bar codes.ZXING does not have the capability to recognize multiple barcodes in the same image.TEST CASES OBTAINED:We have performed a set of test cases on the commercial 2-D barcode libraries that can be treated as alternatives to the open source 2-D barcodes. These bar code decoding libraries are not free, but they are comparatively cheap and are obtained at a very low price compared to the libraries provided by Atalasoft.We have currently worked on three bar coding libraries which are the Partitek, Clear Image and Quality Soft bar coding libraries. We have performed test cases taking into consideration multiple barcodes with different resolutions and bit depth. Various set of combinations were tried on all the three commercial bar coding libraries. We could conclude that in spite of having multiple bit depths, there must be a minimum of 350 dpi resolution for getting the bar codes decoded.All of the three bar code decoding libraries perform error correction and would recognize multiple barcodes on a single image. But, all these facilities are not available in ZXING, open source 2-D bar coding library.appendix G: GOOGLE WAVECOMMUNICATION AND COLLABORATION:We have participated in experimenting Google Wave in use with the Commercial or Software projects. Google Wave is an online tool for real time communication and collaboration. We can say that Google Wave is a very powerful and flexible tool. A wave can be both a conversation and a document where people can discuss and work together using richly formatted text, photos, videos, maps, and more.LESSONS LEARNT:Google Wave illustrates uniqueness in the following criteria:Collaborative workVersioningVirtual conferencingInteractivity with multiple usersPlaybackInstant messagingThreaded conversationsPhoto SharingMeeting NotesAlthough Google Wave is a tool with its exclusive behavior, it also has some limitations as follows:No support for tablesCannot remove participants from waveUsing manual files instead of rich text documents on the waveReliability and Stability issues Missing revisions with rollbacks.appendix H: COMMUNICATION WITH ZXINGRESEARCH:After a deep insight research on ZXING, open source 2-D barcode decoding library we could finally understand that there were two major problems associated with ZXING.Error correction in barcodesComplexity in storing large amounts of dataDetection of barcode when the Driver’s License is given in full pageThis let us contact the ZXING team, seeking for their help in moving our project ahead. We could get the information that the problems associated with ZXING were actually those which the ZXING team itself is trying to sort out. They have given us an opportunity to let us change the code, if we were capable to and that they would help us with it. RECOMMENDED SOLUTION:To use Cold Fusion and Java Loader that automatically extracts the image from the Drivers License and decodes. For that we will have to integrate Cold Fusion and Java loader to our existing project.To add a module to the ZXING Project where the barcode regions is detected with appropriate detection of quite zone and start and stop patterns. This is the most unique thing on a pdf417 barcode (easiest way to identify an image) where the start pattern represents 81111113 ending with space and Stop pattern represents 711311121 ending with a bar. We feel that this unique pattern is exploited by the existing commercial tools like partitek to successfully identify the barcode in an image and starts to find the data region and left and right row indicating symbol characters. We are currently working with Team ZXING to develop a module specifically for decoding pdf417 2D Barcodes.Upon Closer examination, we realize that it fails to decompress the barcode data as it uses the Byte Compaction method.Pdf417 supports three types of compaction modes: Text, Byte and Numeric.Our focus is mainly on byte compaction where it converts the sequence of bytes into codewords through a base 256 to base 900 conversions. This happens while encoding, so decoding this expects minimal errors. ZXING works fine for almost all kinds of pdf417 2D barcodes except for the one dealing with Drivers License. Since the driver license contains a lot of data therefore upon compression to a barcode to a fixed height and width reduces the precision and clarity. Density also plays an important rule. ................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download