From 6386c1b917b2976cd7e9ec1568685118e4df769c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Tue, 19 Apr 2016 16:26:17 +0200 Subject: [PATCH] Initial commit (from addressbook-lib) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Roland Häder --- .gitattributes | 2 + .gitignore | 11 + build.xml | 73 + docs/COPYING | 3 + docs/COPYING.documents | 397 +++++ docs/COPYING.software | 674 ++++++++ docs/NEWS | 7 + docs/README | 4 + docs/THANKS | 7 + ...-modules-java-j2seproject-copylibstask.jar | Bin 0 -> 26956 bytes lib/jcontacts-business-core.jar | Bin 0 -> 65116 bytes lib/jcontacts-core.jar | Bin 0 -> 21771 bytes .../javax.persistence_2.1.0.v201304241213.jar | Bin 0 -> 164637 bytes lib/juser-core.jar | Bin 0 -> 45365 bytes lib/nblibraries.properties | 8 + nbproject/build-impl.xml | 1444 +++++++++++++++++ nbproject/genfiles.properties | 8 + nbproject/project.properties | 105 ++ nbproject/project.xml | 18 + .../addressbook/AddressbookLoadedEvent.java | 35 + .../addressbook/LoadedAddressbookEvent.java | 51 + .../sharing/AddressbookSharingEvent.java | 43 + .../sharing/EndedAddressbookSharingEvent.java | 58 + .../StartedAddressbookSharingEvent.java | 58 + .../events/sharing/type/SharingType.java | 36 + .../AddressbookNameAlreadyUsedException.java | 43 + .../AddressbookNotFoundException.java | 43 + ...serAlreadySharingAddressbookException.java | 44 + .../model/addressbook/Addressbook.java | 135 ++ .../model/addressbook/UserAddressbook.java | 237 +++ .../addressbook/entry/AddressbookEntry.java | 108 ++ .../entry/UserAddressbookEntry.java | 178 ++ .../addressbook/shared/AddressbookShare.java | 232 +++ .../shared/ShareableAddressbook.java | 106 ++ .../addressbook/status/AddressbokStatus.java | 61 + 35 files changed, 4229 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 build.xml create mode 100644 docs/COPYING create mode 100644 docs/COPYING.documents create mode 100644 docs/COPYING.software create mode 100644 docs/NEWS create mode 100644 docs/README create mode 100644 docs/THANKS create mode 100644 lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar create mode 100644 lib/jcontacts-business-core.jar create mode 100644 lib/jcontacts-core.jar create mode 100644 lib/jpa20-persistence/javax.persistence_2.1.0.v201304241213.jar create mode 100644 lib/juser-core.jar create mode 100644 lib/nblibraries.properties create mode 100644 nbproject/build-impl.xml create mode 100644 nbproject/genfiles.properties create mode 100644 nbproject/project.properties create mode 100644 nbproject/project.xml create mode 100644 src/org/mxchange/jaddressbookcore/events/addressbook/AddressbookLoadedEvent.java create mode 100644 src/org/mxchange/jaddressbookcore/events/addressbook/LoadedAddressbookEvent.java create mode 100644 src/org/mxchange/jaddressbookcore/events/sharing/AddressbookSharingEvent.java create mode 100644 src/org/mxchange/jaddressbookcore/events/sharing/EndedAddressbookSharingEvent.java create mode 100644 src/org/mxchange/jaddressbookcore/events/sharing/StartedAddressbookSharingEvent.java create mode 100644 src/org/mxchange/jaddressbookcore/events/sharing/type/SharingType.java create mode 100644 src/org/mxchange/jaddressbookcore/exceptions/AddressbookNameAlreadyUsedException.java create mode 100644 src/org/mxchange/jaddressbookcore/exceptions/AddressbookNotFoundException.java create mode 100644 src/org/mxchange/jaddressbookcore/exceptions/UserAlreadySharingAddressbookException.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/Addressbook.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/UserAddressbook.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/entry/AddressbookEntry.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/entry/UserAddressbookEntry.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/shared/AddressbookShare.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/shared/ShareableAddressbook.java create mode 100644 src/org/mxchange/jaddressbookcore/model/addressbook/status/AddressbokStatus.java diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..17cdcd5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Use Linux/Uni* line-feed for new lines (prevents converting) +* text=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..51ac39e --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +/nbproject/private/ +/nbproject/*~ +/manifest.mf +/build/ +/dist/ +/data/* +/*.properties +/*-ejb/nbproject/private/ +/*-ejb/nbproject/*~ +/*-ejb/build/ +/*-ejb/dist/ diff --git a/build.xml b/build.xml new file mode 100644 index 0000000..6e3d8ba --- /dev/null +++ b/build.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + Builds, tests, and runs the project jaddressbook-core. + + + diff --git a/docs/COPYING b/docs/COPYING new file mode 100644 index 0000000..44fe36c --- /dev/null +++ b/docs/COPYING @@ -0,0 +1,3 @@ +For scripts, except templates and compileable templates see docs/COPYING.software. + +For documents see docs/COPYING.documents. diff --git a/docs/COPYING.documents b/docs/COPYING.documents new file mode 100644 index 0000000..4a0fe1c --- /dev/null +++ b/docs/COPYING.documents @@ -0,0 +1,397 @@ + GNU Free Documentation License + Version 1.2, November 2002 + + + Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + +0. PREAMBLE + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +1. APPLICABILITY AND DEFINITIONS + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The "Document", below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as "you". You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A "Modified Version" of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A "Secondary Section" is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The "Invariant Sections" are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The "Cover Texts" are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A "Transparent" copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called "Opaque". + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The "Title Page" means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section "Entitled XYZ" means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as "Acknowledgements", +"Dedications", "Endorsements", or "History".) To "Preserve the Title" +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +2. VERBATIM COPYING + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +3. COPYING IN QUANTITY + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +4. MODIFICATIONS + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +A. Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. +B. List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. +C. State on the Title page the name of the publisher of the + Modified Version, as the publisher. +D. Preserve all the copyright notices of the Document. +E. Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. +F. Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. +G. Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. +H. Include an unaltered copy of this License. +I. Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. +J. Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. +K. For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. +L. Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. +M. Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. +N. Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. +O. Preserve any Warranty Disclaimers. + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +5. COMBINING DOCUMENTS + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + + +6. COLLECTIONS OF DOCUMENTS + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +7. AGGREGATION WITH INDEPENDENT WORKS + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +8. TRANSLATION + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +9. TERMINATION + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +10. FUTURE REVISIONS OF THIS LICENSE + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +ADDENDUM: How to use this License for your documents + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + + Copyright (c) YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. diff --git a/docs/COPYING.software b/docs/COPYING.software new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/docs/COPYING.software @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/docs/NEWS b/docs/NEWS new file mode 100644 index 0000000..abf09cb --- /dev/null +++ b/docs/NEWS @@ -0,0 +1,7 @@ +NEWS +==== + +[2008-11-20] +------------ +- "Core" directories 'devel', 'inc', 'templates' and 'tests' imported +- Initial import prepared diff --git a/docs/README b/docs/README new file mode 100644 index 0000000..f196a1d --- /dev/null +++ b/docs/README @@ -0,0 +1,4 @@ +README +------ + +This file needs some extending... ;) diff --git a/docs/THANKS b/docs/THANKS new file mode 100644 index 0000000..91bd29d --- /dev/null +++ b/docs/THANKS @@ -0,0 +1,7 @@ +Special Thanks goes to: + - Daff + - toms + - Arne Brodowski (http://www.arnebrodowski.de/blog/) + - And all the others I have not listed here. + +If you think your name is missing here please ICQ me: 8809296 diff --git a/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar b/lib/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar new file mode 100644 index 0000000000000000000000000000000000000000..60c2f42f50815dca99a986845f6b4b036318d782 GIT binary patch literal 26956 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 literal 0 HcmV?d00001 diff --git a/lib/jcontacts-business-core.jar b/lib/jcontacts-business-core.jar new file mode 100644 index 0000000000000000000000000000000000000000..7db7e0a370ce73c0a9b3970b4e195bff2a0528f7 GIT binary patch literal 65116 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
  • +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 literal 0 HcmV?d00001 diff --git a/lib/jcontacts-core.jar b/lib/jcontacts-core.jar new file mode 100644 index 0000000000000000000000000000000000000000..ad4d408e75d2f4ff70b0f64e5db0987575c01918 GIT binary patch literal 21771 zcmeHP33yyrbv}1yq&FHp*|H={wrt50Z_#GSOT5IEZSA&fNp>vRiJX8LkDjH8M>EdM zD7F(^2nk{90%>WAX$hr)0HqMJ*a;yUTPTILP)ZkQo0g?56zBq!Qb_urd+(d~=IM=W z8S?e}+Ss4oyYIex&;9SY+keixcMk3kh9X2^B6{6DdvVSGE29t%_m6e28yp$vc;RzI z2lGjPcE>$?KY9CS4oo63|JC3xpLDo;WN@H=bgX@NU^tdaoUpRFbw{jBHjz$kk8WsR zUlHj}xnjCc#o|*|6mfWYZTmG9k=~3I%UKiadd_nCZSCuiZQZ)=`1(!JrURK+JZVLH z)0tE0Oe_b9%@vV~hy%=9hY*0JGm{;~Q&i{_(`VvSvDBnBN76cP(wpPyR4x|JW#`DW zqIf2qdydR&FP(YPN=;aqIb^IXF2gz#w@$GZy%qT0%u_!Mm!VhSudR4~y8^vR4ejw{ zESvq@3m=)Y>$}4U$*4qeG9h9nD7sRZUtsExjj^ z$xThf&LXm@dFbZYt+9@oTq4=ghrY4{ky)RV)lJ@nEOe7*N+a5agPHgDAWLAMQsayt?SUal`;%WJ+Vp`dn@%Lpj>M)dw5OBa z9bN5Cea7y*+h^&`r(>Onoym9Gftb#V3Rb&I%8T6L)#hbOWHq>9CNkNas*}4UC$`e5 z(jGad30gm^K6;M85L8o6ho1ga4%DL3sf8_NgSQHo5W>J0J7D&vXR`U}q1x^qYTQhv zGdUEx*eSFibxpw_lZjclt4$A_PU-25yPle?r0AY>I%&mHauQtPfEkLVCWaEubk#RY zLq6>TffGq&$~SwV6jWe|Q-Q*Fg8IGMyMh9^(yr#ktYlf3S6ppnM=f-!I+n;KF#r}i z&~%JziaLA>6M}`g#WfK)agMB`iBrAl2}oO9(0+rdoHc2AMt44KL3`LqxhiHN>u$F~ znRdeoDz$Ezi6t@S3+CDb$8WacxgE_%1%;<#*(rr9*wj2IC^DL!$;7RJ1XtYD9iyF> zI?RcMtJ17KobN`Ja%n`HPj;xX(BWiMBHb}+Ww2l+ZsR4ZRFI$m{(@Mon?nL@uY?Hq zQZnQ{Oj!N#9HDY~Hwjz`&kJawyjRj9d9TvX)%v-H7R&fr0%1b>CA3uD>uH(1FQ*21 zZzOOdypQVqSLysK_46wIyqea?bZhBqd2iD1oAvt^YL)SAv`*gJsYBk^(*}9p2rk0q zTtl1XeG6@s_ib9vwOY=0{k%gzcWRtFHO^hMTjuMcZh7yaUU~1Met93DJ zHD7AVX|-6)akU((hn8_@IfoiJ)X1R~9Ex)2Dh{pW&?*kC=Fl1rt>w_w z9BSfFGlyC@)XJeY4z1%*yCFIZv7Un)IC4V-P&e}9;)vKJuHlP(tYf^J4Y9=#Tf<^o zgxbZm5wTtD;0&GoawlJQ@ntt(y7rSQ8IccO|4yc#O&vcw(LnxcGQgI7BCOI>m!t@(T$+f;x7jo=)p6V|5 z$u?$9v-Oii#*$kZCx*}*$;Qr}VtyRz>mKXJBBRTg#Yy{qF|@bQ2g$y40;`;^>oU8N zc@lk0(duJ~3CvU(>x7kI?M$c~iZPf@Vop^$lSgmxEq#5y8HXh@pWQ9*nd(}&=@?iH6OrLUF~%hc45g2w2)lD1 zi`!|P%$iiM_GrzQQ^O3%gHse;wrNBsmJePw;U@?dU5r(IsDI#4|L9&lE#WrM%dHS)KP1G0Z_yX2#r#&GV`mw@cn&Ik$U?(yxoNZ@b?d zQ?y)=-*nKA@ovF;V@&{>-{9p0dI*({jvX2t+2i!A0)D;7J(x5Xud&-`ig~-%AdiU> zL1p?KTcdjZmIG1StF=BOWRO9w^mzdtsY=MD0*S)e99L=*bIcs+;cU@W3lH}7kBkkD zje}v?n7Mt+W|-76Lj$eVFWhvq+ErdjU?<5_ez$II#_tTDW49$vLAMif;Q@WFUJZAbm5~m#zC@Or3_=B%eQ9SRmB{S^ zw{BvCA*4wDLdS9&Q|((dl#YXi#K1+6Sx1I)QwcDJHjnbO!kxkA;)qb!;n_2*_D$-H z9#h%Xi}X4)JBG1espk&)bSJzduwIoCmAItIRGOCN6MD7_tv0F9Wk%tRJvkgZB{d1| z>0@Js*yutl!Q6V;x#+kAyiA9i{(sH6=(6y86_I$^C-|~YkiT>MpY;j;!u;tkI~V_7 zI2Xg6akz9P$0+a`R=QY$_8j`T9+WlAtktF!a9_wJwa`T&7g8iM5*U4FEYK3aRD=8y zsla2|${&J*!`~;t*8IeEGw?!MS)})~4)RIPB0()a8ESTr?KzuYqu}^}`Oja9UNzc3 z)ZaT6jYkI#9T<+-QLwPKk#{IrtJ^qghmVf#Fag&ZzPWgna{=>zmZLmV*0LHbRT-j0j7j_x$+ zb$od(9XIJLU;c(ZYtrA+=S=zw4*eyE{*6Qb&Y}OLADi@F^b?bw0eFyEBb4bzDi#+>67#+lRizKG3jY~#-wNI6DIu;=lwkA{UUwIq(7rC zoAg5t{fNFSsO9o~l$Y(EHtFx^d6OQc3x+skictpe0KFe<_Y#FEgR;Z6OqV!L?rxid z_h&L`ED&IIyi!CH*(m&PQG7mVht9>AAr71LggAl=ecYr$+Go-zjhPfGaFX-b)t zrJPBp`SEsowMlQJH<|Ry^eZO)7QMry-{BYc@#S|p-S5%;hPd7oHwc(W zq3;fK4~_O?OdTHCKXTxD_C`9X6c>lrD3=~epN11SmW3_j`vn0EO^KIo5JiHEeQf~S zUFa0j%irlSx+bh_B4bVDH3<5go52fMEl24pS_KEUpw)2a*AqLr@pT+_bO3H{xVLE^ zp7-Oq7EeP64`*qF4j^#QqU-1oVxe7~rU_4n@u2}}j?nd4x`D=z(own*(Kp5E74*s* zNmz7@UWEuWhtAcAr#QkBN6A7FGW!XdW8;Yk;t zR{4S96p9aW@weoQ�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 I1AO-X0b7Nc0RR91 literal 0 HcmV?d00001 diff --git a/lib/nblibraries.properties b/lib/nblibraries.properties new file mode 100644 index 0000000..0d47c47 --- /dev/null +++ b/lib/nblibraries.properties @@ -0,0 +1,8 @@ +libs.CopyLibs.classpath=\ + ${base}/CopyLibs/org-netbeans-modules-java-j2seproject-copylibstask.jar +libs.CopyLibs.displayName=CopyLibs Task +libs.CopyLibs.prop-version=2.0 +libs.jpa20-persistence.classpath=\ + ${base}/jpa20-persistence/javax.persistence_2.1.0.v201304241213.jar +libs.jpa20-persistence.displayName=Persistence (JPA 2.1) +libs.jpa20-persistence.prop-maven-dependencies=org.eclipse.persistence:javax.persistence:2.1.0:jar diff --git a/nbproject/build-impl.xml b/nbproject/build-impl.xml new file mode 100644 index 0000000..767baf9 --- /dev/null +++ b/nbproject/build-impl.xml @@ -0,0 +1,1444 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set src.dir + Must set test.src.dir + Must set build.dir + Must set dist.dir + Must set build.classes.dir + Must set dist.javadoc.dir + Must set build.test.classes.dir + Must set build.test.results.dir + Must set build.classes.excludes + Must set dist.jar + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + No tests executed. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must set JVM to use for profiling in profiler.info.jvm + Must set profiler agent JVM arguments in profiler.info.jvmargs.agent + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + To run this application from the command line without Ant, try: + + java -jar "${dist.jar.resolved}" + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + Must select one file in the IDE or set run.class + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set debug.class + + + + + Must select one file in the IDE or set debug.class + + + + + Must set fix.includes + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + Must select one file in the IDE or set profile.class + This target only works when run from inside the NetBeans IDE. + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + This target only works when run from inside the NetBeans IDE. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select one file in the IDE or set run.class + + + + + + Must select some files in the IDE or set test.includes + + + + + Must select one file in the IDE or set run.class + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Must select some files in the IDE or set javac.includes + + + + + + + + + + + + + + + + + + + + Some tests failed; see details above. + + + + + + + + + Must select some files in the IDE or set test.includes + + + + Some tests failed; see details above. + + + + Must select some files in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + Some tests failed; see details above. + + + + + Must select one file in the IDE or set test.class + + + + Must select one file in the IDE or set test.class + Must select some method in the IDE or set test.method + + + + + + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + Must select one file in the IDE or set applet.url + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/nbproject/genfiles.properties b/nbproject/genfiles.properties new file mode 100644 index 0000000..f769db8 --- /dev/null +++ b/nbproject/genfiles.properties @@ -0,0 +1,8 @@ +build.xml.data.CRC32=e9448132 +build.xml.script.CRC32=69dc9126 +build.xml.stylesheet.CRC32=8064a381@1.79.1.48 +# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml. +# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you. +nbproject/build-impl.xml.data.CRC32=e9448132 +nbproject/build-impl.xml.script.CRC32=6f093a0b +nbproject/build-impl.xml.stylesheet.CRC32=05530350@1.79.1.48 diff --git a/nbproject/project.properties b/nbproject/project.properties new file mode 100644 index 0000000..9c7c322 --- /dev/null +++ b/nbproject/project.properties @@ -0,0 +1,105 @@ +annotation.processing.enabled=true +annotation.processing.enabled.in.editor=true +annotation.processing.processors.list= +annotation.processing.run.all.processors=true +annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output +application.title=jaddressbook-core +application.vendor=rhaeder +auxiliary.org-netbeans-spi-editor-hints-projects.perProjectHintSettingsFile=nbproject/cfg_hints.xml +build.classes.dir=${build.dir}/classes +build.classes.excludes=**/*.java,**/*.form +# This directory is removed when the project is cleaned: +build.dir=build +build.generated.dir=${build.dir}/generated +build.generated.sources.dir=${build.dir}/generated-sources +# Only compile against the classpath explicitly listed here: +build.sysclasspath=ignore +build.test.classes.dir=${build.dir}/test/classes +build.test.results.dir=${build.dir}/test/results +# Uncomment to specify the preferred debugger connection transport: +#debug.transport=dt_socket +debug.classpath=\ + ${run.classpath} +debug.test.classpath=\ + ${run.test.classpath} +# Files in build.classes.dir which should be excluded from distribution jar +dist.archive.excludes= +# This directory is removed when the project is cleaned: +dist.dir=dist +dist.jar=${dist.dir}/jaddressbook-core.jar +dist.javadoc.dir=${dist.dir}/javadoc +endorsed.classpath= +excludes= +file.reference.jcontacts-business-core.jar=lib/jcontacts-business-core.jar +file.reference.jcontacts-core.jar=lib/jcontacts-core.jar +file.reference.juser-core.jar=lib/juser-core.jar +includes=** +jar.archive.disabled=${jnlp.enabled} +jar.compress=false +jar.index=${jnlp.enabled} +javac.classpath=\ + ${file.reference.juser-core.jar}:\ + ${file.reference.jcontacts-core.jar}:\ + ${file.reference.jcontacts-business-core.jar}:\ + ${libs.jpa20-persistence.classpath} +# Space-separated list of extra javac options +javac.compilerargs=-Xlint:unchecked -Xlint:deprecation +javac.deprecation=true +javac.external.vm=true +javac.processorpath=\ + ${javac.classpath} +javac.source=1.7 +javac.target=1.7 +javac.test.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +javac.test.processorpath=\ + ${javac.test.classpath} +javadoc.additionalparam= +javadoc.author=true +javadoc.encoding=${source.encoding} +javadoc.noindex=false +javadoc.nonavbar=false +javadoc.notree=false +javadoc.private=true +javadoc.splitindex=true +javadoc.use=true +javadoc.version=true +javadoc.windowtitle=JAddressbookCore +jnlp.codebase.type=no.codebase +jnlp.descriptor=application +jnlp.enabled=false +jnlp.mixed.code=default +jnlp.offline-allowed=false +jnlp.signed=false +jnlp.signing= +jnlp.signing.alias= +jnlp.signing.keystore= +# Optional override of default Application-Library-Allowable-Codebase attribute identifying the locations where your signed RIA is expected to be found. +manifest.custom.application.library.allowable.codebase= +# Optional override of default Caller-Allowable-Codebase attribute identifying the domains from which JavaScript code can make calls to your RIA without security prompts. +manifest.custom.caller.allowable.codebase= +# Optional override of default Codebase manifest attribute, use to prevent RIAs from being repurposed +manifest.custom.codebase= +# Optional override of default Permissions manifest attribute (supported values: sandbox, all-permissions) +manifest.custom.permissions= +meta.inf.dir=${src.dir}/META-INF +mkdist.disabled=true +platform.active=default_platform +project.license=gpl30 +run.classpath=\ + ${javac.classpath}:\ + ${build.classes.dir} +# Space-separated list of JVM arguments used when running the project. +# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value. +# To set system properties for unit tests define test-sys-prop.name=value: +run.jvmargs= +run.test.classpath=\ + ${javac.test.classpath}:\ + ${build.test.classes.dir} +source.encoding=UTF-8 +source.reference.jcontacts-business-core.jar=../jcontacts-business-core/src/ +source.reference.jcontacts-core.jar=../jcontacts-core/src/ +source.reference.juser-core.jar=../juser-core/src/ +src.dir=src +test.src.dir=test diff --git a/nbproject/project.xml b/nbproject/project.xml new file mode 100644 index 0000000..25d3974 --- /dev/null +++ b/nbproject/project.xml @@ -0,0 +1,18 @@ + + + org.netbeans.modules.java.j2seproject + + + jaddressbook-core + + + + + + + + + .\lib\nblibraries.properties + + + diff --git a/src/org/mxchange/jaddressbookcore/events/addressbook/AddressbookLoadedEvent.java b/src/org/mxchange/jaddressbookcore/events/addressbook/AddressbookLoadedEvent.java new file mode 100644 index 0000000..b285217 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/events/addressbook/AddressbookLoadedEvent.java @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.events.addressbook; + +import java.io.Serializable; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; + +/** + * An interface for an event if an address book has been loaded + *

    + * @author Roland Haeder + */ +public interface AddressbookLoadedEvent extends Serializable { + + /** + * Getter for address book instance + *

    + * @return Address book instance + */ + Addressbook getAddressbook (); +} diff --git a/src/org/mxchange/jaddressbookcore/events/addressbook/LoadedAddressbookEvent.java b/src/org/mxchange/jaddressbookcore/events/addressbook/LoadedAddressbookEvent.java new file mode 100644 index 0000000..c44d7f2 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/events/addressbook/LoadedAddressbookEvent.java @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.events.addressbook; + +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; + +/** + * An event fired when an address book has been loaded + *

    + * @author Roland Haeder + */ +public class LoadedAddressbookEvent implements AddressbookLoadedEvent { + + /** + * Serial number + */ + private static final long serialVersionUID = 1L; + + /** + * Adress book instance causing this event + */ + private final Addressbook addressbook; + + /** + * Constructor with address book instance + *

    + * @param addressbook Address book instance + */ + public LoadedAddressbookEvent (final Addressbook addressbook) { + this.addressbook = addressbook; + } + + @Override + public Addressbook getAddressbook () { + return this.addressbook; + } +} diff --git a/src/org/mxchange/jaddressbookcore/events/sharing/AddressbookSharingEvent.java b/src/org/mxchange/jaddressbookcore/events/sharing/AddressbookSharingEvent.java new file mode 100644 index 0000000..f7e05e6 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/events/sharing/AddressbookSharingEvent.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.events.sharing; + +import java.io.Serializable; +import org.mxchange.jaddressbookcore.events.sharing.type.SharingType; +import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook; + +/** + * An interface for address book sharing events + *

    + * @author Roland Haeder + */ +public interface AddressbookSharingEvent extends Serializable { + + /** + * Getter for address book share instance + *

    + * @return Address book share instance + */ + ShareableAddressbook getShareableAddressbook (); + + /** + * Getter for sharing type enum + *

    + * @return Sharing type enum + */ + SharingType getSharingType (); +} diff --git a/src/org/mxchange/jaddressbookcore/events/sharing/EndedAddressbookSharingEvent.java b/src/org/mxchange/jaddressbookcore/events/sharing/EndedAddressbookSharingEvent.java new file mode 100644 index 0000000..54b2d53 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/events/sharing/EndedAddressbookSharingEvent.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.events.sharing; + +import org.mxchange.jaddressbookcore.events.sharing.type.SharingType; +import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook; + +/** + * An event fired when a user ends sharing address books + *

    + * @author Roland Haeder + */ +public class EndedAddressbookSharingEvent implements AddressbookSharingEvent { + + /** + * Serial number + */ + private static final long serialVersionUID = 152_896_748_186_018_497L; + + /** + * Shared address book entry + */ + private final ShareableAddressbook shareableAddressbook; + + /** + * Constructor with address book share entry + *

    + * @param share Address book share entry + */ + public EndedAddressbookSharingEvent (final ShareableAddressbook share) { + this.shareableAddressbook = share; + } + + @Override + public ShareableAddressbook getShareableAddressbook () { + return this.shareableAddressbook; + } + + @Override + public SharingType getSharingType () { + // Started sharing + return SharingType.ENDED; + } +} diff --git a/src/org/mxchange/jaddressbookcore/events/sharing/StartedAddressbookSharingEvent.java b/src/org/mxchange/jaddressbookcore/events/sharing/StartedAddressbookSharingEvent.java new file mode 100644 index 0000000..61040ca --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/events/sharing/StartedAddressbookSharingEvent.java @@ -0,0 +1,58 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.events.sharing; + +import org.mxchange.jaddressbookcore.events.sharing.type.SharingType; +import org.mxchange.jaddressbookcore.model.addressbook.shared.ShareableAddressbook; + +/** + * An event fired when a user starts sharing address books + *

    + * @author Roland Haeder + */ +public class StartedAddressbookSharingEvent implements AddressbookSharingEvent { + + /** + * Serial number + */ + private static final long serialVersionUID = 152_896_748_186_018_497L; + + /** + * Shared address book entry + */ + private final ShareableAddressbook shareableAddressbook; + + /** + * Constructor with address book share entry + *

    + * @param share Address book share entry + */ + public StartedAddressbookSharingEvent (final ShareableAddressbook share) { + this.shareableAddressbook = share; + } + + @Override + public ShareableAddressbook getShareableAddressbook () { + return this.shareableAddressbook; + } + + @Override + public SharingType getSharingType () { + // Started sharing + return SharingType.STARTED; + } +} diff --git a/src/org/mxchange/jaddressbookcore/events/sharing/type/SharingType.java b/src/org/mxchange/jaddressbookcore/events/sharing/type/SharingType.java new file mode 100644 index 0000000..0bfd148 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/events/sharing/type/SharingType.java @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.events.sharing.type; + +/** + * An enumeration for sharing types + *

    + * @author Roland Haeder + */ +public enum SharingType { + + /** + * Sharing has been started + */ + STARTED, + + /** + * Sharing has been ended + */ + ENDED; + +} diff --git a/src/org/mxchange/jaddressbookcore/exceptions/AddressbookNameAlreadyUsedException.java b/src/org/mxchange/jaddressbookcore/exceptions/AddressbookNameAlreadyUsedException.java new file mode 100644 index 0000000..e50241a --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/exceptions/AddressbookNameAlreadyUsedException.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.exceptions; + +import java.text.MessageFormat; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; + +/** + * An exception thrown when the user has already used the name. + *

    + * @author Roland Haeder + */ +public class AddressbookNameAlreadyUsedException extends Exception { + + /** + * Serial number + */ + private static final long serialVersionUID = 58_169_748_928_767_381L; + + /** + * Constructor with address book instance + *

    + * @param addressbook Address book instance + */ + public AddressbookNameAlreadyUsedException (final Addressbook addressbook) { + super(MessageFormat.format("User {0} has already used the name {1}.", addressbook.getAddressbookUser(), addressbook.getAddressbookName())); //NOI18N + } + +} diff --git a/src/org/mxchange/jaddressbookcore/exceptions/AddressbookNotFoundException.java b/src/org/mxchange/jaddressbookcore/exceptions/AddressbookNotFoundException.java new file mode 100644 index 0000000..9d737d1 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/exceptions/AddressbookNotFoundException.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.exceptions; + +import java.text.MessageFormat; + +/** + * An exception thrown when the address book's id number is not valid, so no + * address book can be found. + *

    + * @author Roland Haeder + */ +public class AddressbookNotFoundException extends Exception { + + /** + * Serial number + */ + private static final long serialVersionUID = 14_986_976_417_658_920L; + + /** + * Creates an exception with given id number that could not be found. + *

    + * @param addressbookId Address book id number + */ + public AddressbookNotFoundException (final Long addressbookId) { + super(MessageFormat.format("Address book with id number {0} does not exist.", addressbookId)); + } + +} diff --git a/src/org/mxchange/jaddressbookcore/exceptions/UserAlreadySharingAddressbookException.java b/src/org/mxchange/jaddressbookcore/exceptions/UserAlreadySharingAddressbookException.java new file mode 100644 index 0000000..9eb8059 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/exceptions/UserAlreadySharingAddressbookException.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.exceptions; + +import java.text.MessageFormat; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; +import org.mxchange.jusercore.model.user.User; + +/** + * An exception thrown whent the address book is already shared with given user + *

    + * @author Roland Haeder + */ +public class UserAlreadySharingAddressbookException extends Exception { + + /** + * Serial number + */ + private static final long serialVersionUID = 58_528_177_571_976_034L; + + /** + * Constructor with address book being already shared with sharee + *

    + * @param addressbook Address book instance + * @param sharee User instance the address book is being shared with + */ + public UserAlreadySharingAddressbookException (final Addressbook addressbook, final User sharee) { + super(MessageFormat.format("Address book id {0} owned by user {1} is already shared with user {2}", addressbook.getAddressbookId(), addressbook.getAddressbookUser().getUserId(), sharee.getUserId())); + } +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/Addressbook.java b/src/org/mxchange/jaddressbookcore/model/addressbook/Addressbook.java new file mode 100644 index 0000000..5820ba8 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/Addressbook.java @@ -0,0 +1,135 @@ +/* + * Copyright (C) 2016 Cho-Time GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook; + +import java.io.Serializable; +import java.util.Calendar; +import org.mxchange.jaddressbookcore.model.addressbook.status.AddressbokStatus; +import org.mxchange.jusercore.model.user.User; + +/** + * A POJI for addressbooks + *

    + * @author Roland Haeder + */ +public interface Addressbook extends Serializable { + + /** + * Getter for id number + *

    + * @return Id number + */ + Long getAddressbookId (); + + /** + * Setter for id number + *

    + * @param addressbookId Id number + */ + void setAddressbookId (final Long addressbookId); + + /** + * Getter for addressbook creation timestamp + *

    + * @return Addressbook creation timestamp + */ + Calendar getAddressbookCreated (); + + /** + * Setter for addressbook creation timestamp + *

    + * @param addressbookCreated Addressbook creation timestamp + */ + void setAddressbookCreated (final Calendar addressbookCreated); + + /** + * Getter for addressbook's name + *

    + * @return Addressbook's name + */ + String getAddressbookName (); + + /** + * Setter for addressbook's name + *

    + * @param addressbookName Addressbook's name + */ + void setAddressbookName (final String addressbookName); + + /** + * Getter for addressbook status + *

    + * @return Addressbook status + */ + AddressbokStatus getAddressbookStatus (); + + /** + * Setter for addressbook status + *

    + * @param addressbookStatus Addressbook status + */ + void setAddressbookStatus (final AddressbokStatus addressbookStatus); + + /** + * Getter for addressbook's user (owner) + *

    + * @return Addressbook's user (owner) + */ + User getAddressbookUser (); + + /** + * Setter for addressbook's user (owner) + *

    + * @param addressbookUser Addressbook's user (owner) + */ + void setAddressbookUser (final User addressbookUser); + + /** + * Getter for last locked timestamp + *

    + * @return Last locked timestamp + */ + Calendar getAddressbookLastLocked (); + + /** + * Setter for last locked timestamp + *

    + * @param addressbookLastLocked Last locked timestamp + */ + void setAddressbookLastLocked (final Calendar addressbookLastLocked); + + /** + * Getter for last locked reason + *

    + * @return Last locked reason + */ + String getAddressbookLastLockedReason (); + + /** + * Getter for last locked reason + *

    + * @param addressbookLastLockedReason Last locked reason + */ + void setAddressbookLastLockedReason (final String addressbookLastLockedReason); + + @Override + boolean equals (final Object object); + + @Override + int hashCode (); + +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/UserAddressbook.java b/src/org/mxchange/jaddressbookcore/model/addressbook/UserAddressbook.java new file mode 100644 index 0000000..e62dac9 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/UserAddressbook.java @@ -0,0 +1,237 @@ +/* + * Copyright (C) 2016 Cho-Time GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook; + +import java.util.Calendar; +import java.util.Objects; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.Lob; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.mxchange.jaddressbookcore.model.addressbook.status.AddressbokStatus; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; + +/** + * A POJO for user addressbooks + *

    + * @author Roland Haeder + */ +@Entity (name = "addressbooks") +@Table (name = "addressbooks") +@NamedQueries ( + { + @NamedQuery (name = "AllUsersAddressbooks", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookUser = :param ORDER BY a.addressbookId ASC"), + @NamedQuery (name = "SearchUserAddressbookName", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookUser = :user AND LOWER(a.addressbookName) LIKE LOWER(:name)"), + @NamedQuery (name = "SearchAddressbookById", query = "SELECT a FROM addressbooks AS a WHERE a.addressbookId = :id") + } +) +public class UserAddressbook implements Addressbook { + + /** + * Serial number + */ + private static final long serialVersionUID = 176_573_148_678_169L; + + /** + * When this address book has been created + */ + @Basic (optional = false) + @Temporal (value = TemporalType.TIMESTAMP) + @Column (name = "addressbook_created", nullable = false, updatable = false) + private Calendar addressbookCreated; + + /** + * Id number + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "addressbook_id", nullable = false, updatable = false) + private Long addressbookId; + + /** + * Last locked timestamp + */ + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "addressbook_last_locked") + private Calendar addressbookLastLocked; + + /** + * Last locked timestamp + */ + @Lob + @Column (name = "addressbook_last_locked_reason") + private String addressbookLastLockedReason; + + /** + * Name for this address book + */ + @Basic (optional = false) + @Column (name = "addressbook_name", length = 50, nullable = false) + private String addressbookName; + + /** + * Adress book status + */ + @Basic (optional = false) + @Enumerated (EnumType.STRING) + @Column (name = "addressbook_status", nullable = false, length = 10) + private AddressbokStatus addressbookStatus; + + /** + * Connection to "users" table + */ + @JoinColumn (name = "addressbook_user_id", nullable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false) + private User addressbookUser; + + /** + * Public constructor with address book name + *

    + * @param addressbookName Address book name + * @param addressbookUser User instance + * @param addressbookCreated When this entry has been created + */ + public UserAddressbook (final String addressbookName, final User addressbookUser, final Calendar addressbookCreated) { + // Call default constructor + this(); + + // Set name, user instance and creation timestamp + this.addressbookName = addressbookName; + this.addressbookUser = addressbookUser; + this.addressbookCreated = addressbookCreated; + } + + /** + * Default constructor + */ + public UserAddressbook () { + // Set status to UNLOCKED + this.addressbookStatus = AddressbokStatus.UNLOCKED; + } + + @Override + public boolean equals (final Object object) { + if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final Addressbook other = (Addressbook) object; + + if (!Objects.equals(this.getAddressbookName(), other.getAddressbookName())) { + return false; + } else if (!Objects.equals(this.getAddressbookUser(), other.getAddressbookUser())) { + return false; + } + + return true; + } + + @Override + public int hashCode () { + int hash = 7; + hash = 59 * hash + Objects.hashCode(this.getAddressbookName()); + hash = 59 * hash + Objects.hashCode(this.getAddressbookUser()); + return hash; + } + + @Override + public Calendar getAddressbookCreated () { + return this.addressbookCreated; + } + + @Override + public void setAddressbookCreated (final Calendar addressbookCreated) { + this.addressbookCreated = addressbookCreated; + } + + @Override + public Long getAddressbookId () { + return this.addressbookId; + } + + @Override + public void setAddressbookId (final Long addressbookId) { + this.addressbookId = addressbookId; + } + + @Override + public Calendar getAddressbookLastLocked () { + return this.addressbookLastLocked; + } + + @Override + public void setAddressbookLastLocked (final Calendar addressbookLastLocked) { + this.addressbookLastLocked = addressbookLastLocked; + } + + @Override + public String getAddressbookLastLockedReason () { + return this.addressbookLastLockedReason; + } + + @Override + public void setAddressbookLastLockedReason (final String addressbookLastLockedReason) { + this.addressbookLastLockedReason = addressbookLastLockedReason; + } + + @Override + public String getAddressbookName () { + return this.addressbookName; + } + + @Override + public void setAddressbookName (final String addressbookName) { + this.addressbookName = addressbookName; + } + + @Override + public AddressbokStatus getAddressbookStatus () { + return this.addressbookStatus; + } + + @Override + public void setAddressbookStatus (final AddressbokStatus addressbookStatus) { + this.addressbookStatus = addressbookStatus; + } + + @Override + public User getAddressbookUser () { + return this.addressbookUser; + } + + @Override + public void setAddressbookUser (final User addressbookUser) { + this.addressbookUser = addressbookUser; + } + +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/entry/AddressbookEntry.java b/src/org/mxchange/jaddressbookcore/model/addressbook/entry/AddressbookEntry.java new file mode 100644 index 0000000..5e46be2 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/entry/AddressbookEntry.java @@ -0,0 +1,108 @@ +/* + * Copyright (C) 2016 Cho-Time GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook.entry; + +import java.io.Serializable; +import java.util.Calendar; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontactsbusiness.BusinessContact; + +/** + * A POJI for addressbook entries + *

    + * @author Roland Haeder + */ +public interface AddressbookEntry extends Serializable { + + /** + * Getter for id number + *

    + * @return Id number + */ + Long getAddressbookEntryId (); + + /** + * Setter for id number + *

    + * @param addressbookEntryId Id number + */ + void setAddressbookEntryId (final Long addressbookEntryId); + + /** + * Getter for business contact + *

    + * @return Business contact + */ + BusinessContact getAddressbookEntryBusinessContact (); + + /** + * Setter for business contact + *

    + * @param addressbookEntryBusinessContact Business contact + */ + void setAddressbookEntryBusinessContact (final BusinessContact addressbookEntryBusinessContact); + + /** + * Getter for entry created timestamp + *

    + * @return Entry created timestamp + */ + Calendar getAddressbookEntryCreated (); + + /** + * Setter for entry created timestamp + *

    + * @param addressbookEntryCreated Entry created timestamp + */ + void setAddressbookEntryCreated (final Calendar addressbookEntryCreated); + + /** + * Getter for private contact + *

    + * @return Private contact + */ + Contact getAddressbookEntryPrivateContact (); + + /** + * Setter for private contact + *

    + * @param addressbookEntryPrivateContact Private contact + */ + void setAddressbookEntryPrivateContact (final Contact addressbookEntryPrivateContact); + + /** + * Getter for address book + *

    + * @return Address book + */ + Addressbook getAddressbookId (); + + /** + * Setter for address book + *

    + * @param addressbookId Address book + */ + void setAddressbookId (final Addressbook addressbookId); + + @Override + boolean equals (final Object object); + + @Override + int hashCode (); + +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/entry/UserAddressbookEntry.java b/src/org/mxchange/jaddressbookcore/model/addressbook/entry/UserAddressbookEntry.java new file mode 100644 index 0000000..7bbb34e --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/entry/UserAddressbookEntry.java @@ -0,0 +1,178 @@ +/* + * Copyright (C) 2016 Cho-Time GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook.entry; + +import java.util.Calendar; +import java.util.Objects; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.mxchange.jcontacts.contact.Contact; +import org.mxchange.jcontacts.contact.UserContact; +import org.mxchange.jcontactsbusiness.BusinessContact; +import org.mxchange.jcontactsbusiness.CompanyContact; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; +import org.mxchange.jaddressbookcore.model.addressbook.UserAddressbook; + +/** + * A POJO for address book entries + *

    + * @author Roland Haeder + */ +@Entity (name = "addressbook_entries") +@Table (name = "addressbook_entries") +@NamedQueries ( + @NamedQuery ( + name = "SearchUsersAddressbookEntries", + query = "SELECT e FROM addressbook_entries AS e INNER JOIN addressbooks AS a ON e.addressbookId = a WHERE e.addressbookId = :addressbook AND a.addressbookUser = :owner ORDER BY e.addressbookEntryId ASC") +) +public class UserAddressbookEntry implements AddressbookEntry { + + /** + * Serial number + */ + private static final long serialVersionUID = 178_581_768_581_960L; + + /** + * Connection to table "business_contacts" (commercial contacts) + */ + @JoinColumn (name = "entry_business_contact_id", updatable = false) + @OneToOne (targetEntity = CompanyContact.class, cascade = CascadeType.REFRESH) + private BusinessContact addressbookEntryBusinessContact; + + /** + * When this address book entry has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "entry_created", nullable = false, updatable = false) + private Calendar addressbookEntryCreated; + + /** + * Id number + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "entry_id", nullable = false, updatable = false) + private Long addressbookEntryId; + + /** + * Connection to table "contacts" (private contacts) + */ + @JoinColumn (name = "entry_private_contact_id", updatable = false) + @OneToOne (targetEntity = UserContact.class, cascade = CascadeType.REFRESH) + private Contact addressbookEntryPrivateContact; + + /** + * Connection to table "addressbooks" + */ + @JoinColumn (name = "entry_addressbook_id", nullable = false, updatable = false) + @OneToOne (targetEntity = UserAddressbook.class, cascade = CascadeType.REFRESH, optional = false) + private Addressbook addressbookId; + + @Override + public boolean equals (final Object object) { + if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final AddressbookEntry other = (AddressbookEntry) object; + + if (!Objects.equals(this.getAddressbookEntryBusinessContact(), other.getAddressbookEntryBusinessContact())) { + return false; + } else if (!Objects.equals(this.getAddressbookEntryPrivateContact(), other.getAddressbookEntryPrivateContact())) { + return false; + } else if (!Objects.equals(this.getAddressbookId(), other.getAddressbookId())) { + return false; + } + + return true; + } + + @Override + public int hashCode () { + int hash = 3; + hash = 19 * hash + Objects.hashCode(this.getAddressbookEntryBusinessContact()); + hash = 19 * hash + Objects.hashCode(this.getAddressbookEntryPrivateContact()); + hash = 19 * hash + Objects.hashCode(this.getAddressbookId()); + return hash; + } + + @Override + public BusinessContact getAddressbookEntryBusinessContact () { + return this.addressbookEntryBusinessContact; + } + + @Override + public void setAddressbookEntryBusinessContact (final BusinessContact addressbookEntryBusinessContact) { + this.addressbookEntryBusinessContact = addressbookEntryBusinessContact; + } + + @Override + public Calendar getAddressbookEntryCreated () { + return this.addressbookEntryCreated; + } + + @Override + public void setAddressbookEntryCreated (final Calendar addressbookEntryCreated) { + this.addressbookEntryCreated = addressbookEntryCreated; + } + + @Override + public Long getAddressbookEntryId () { + return this.addressbookEntryId; + } + + @Override + public void setAddressbookEntryId (final Long addressbookEntryId) { + this.addressbookEntryId = addressbookEntryId; + } + + @Override + public Contact getAddressbookEntryPrivateContact () { + return this.addressbookEntryPrivateContact; + } + + @Override + public void setAddressbookEntryPrivateContact (final Contact addressbookEntryPrivateContact) { + this.addressbookEntryPrivateContact = addressbookEntryPrivateContact; + } + + @Override + public Addressbook getAddressbookId () { + return this.addressbookId; + } + + @Override + public void setAddressbookId (final Addressbook addressbookId) { + this.addressbookId = addressbookId; + } + +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/shared/AddressbookShare.java b/src/org/mxchange/jaddressbookcore/model/addressbook/shared/AddressbookShare.java new file mode 100644 index 0000000..29536db --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/shared/AddressbookShare.java @@ -0,0 +1,232 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook.shared; + +import java.text.MessageFormat; +import java.util.Calendar; +import java.util.Objects; +import javax.persistence.Basic; +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; +import javax.persistence.OneToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; +import org.mxchange.jaddressbookcore.model.addressbook.UserAddressbook; +import org.mxchange.jusercore.model.user.LoginUser; +import org.mxchange.jusercore.model.user.User; + +/** + * A POJO for sharing address books with other users + *

    + * @author Roland Haeder + */ +@Entity (name = "addressbook_shares") +@Table (name = "addressbook_shares") +@NamedQueries ( + { + @NamedQuery ( + name = "SearchUserSharedAddressbooks", + query = "SELECT s FROM addressbook_shares AS s WHERE s.shareUserOwner = :user ORDER BY s.shareId ASC" + ), + @NamedQuery ( + name = "SearchShareeAddressbookShare", + query = "SELECT s FROM addressbook_shares AS s WHERE s.shareAddressbook = :addressbook AND s.shareUserSharee = :sharee" + ) + } +) +public class AddressbookShare implements ShareableAddressbook { + + /** + * Serial number + */ + private static final long serialVersionUID = 167_889_678_177_691_690L; + + /** + * Address book this share is for + */ + @JoinColumn (name = "share_addressbook_id", nullable = false, updatable = false) + @OneToOne (targetEntity = UserAddressbook.class, cascade = CascadeType.REFRESH, optional = false) + private Addressbook shareAddressbook; + + /** + * When this share has been created + */ + @Basic (optional = false) + @Temporal (TemporalType.TIMESTAMP) + @Column (name = "share_created", nullable = false, updatable = false) + private Calendar shareCreated; + + /** + * Id number + */ + @Id + @GeneratedValue (strategy = GenerationType.IDENTITY) + @Column (name = "share_id", nullable = false, updatable = false) + private Long shareId; + + /** + * User who is owning the share + */ + @JoinColumn (name = "share_owner_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false) + private User shareUserOwner; + + /** + * User the address book is shared with + */ + @JoinColumn (name = "share_sharee_id", nullable = false, updatable = false) + @OneToOne (targetEntity = LoginUser.class, cascade = CascadeType.REFRESH, optional = false) + private User shareUserSharee; + + /** + * Default constructor + */ + public AddressbookShare () { + } + + /** + * Constructor with address book and sharee instance. Both parameters must + * not be null, their id numbers must be set and the adress book's user + * instance must be set and have a valid id set. + *

    + * @param addressbook Address book instance + * @param sharee User sharee instance + */ + public AddressbookShare (final Addressbook addressbook, final User sharee) { + // Call default constructor + this(); + + // Check all conditions + if (null == sharee) { + // Throw NPE + throw new NullPointerException("sharee is null"); //NOI18N + } else if (sharee.getUserId() == null) { + // Throw NPE again + throw new NullPointerException("sharee.userId is null"); //NOI18N + } else if (sharee.getUserId() < 1) { + // Invalid id number + throw new IllegalStateException(MessageFormat.format("sharee.userId={0} is invalid", sharee.getUserId())); //NOI18N + } else if (null == addressbook) { + // Throw NPE again + throw new NullPointerException("addressbook is null"); //NOI18N + } else if (addressbook.getAddressbookId() == null) { + // Throw NPE again + throw new NullPointerException("addressbook.addressbookId is null"); //NOI18N + } else if (addressbook.getAddressbookId() < 1) { + // Invalid id number + throw new IllegalArgumentException(MessageFormat.format("addressbook.addressbookId={0} is invalid.", addressbook.getAddressbookId())); //NOI18N + } else if (Objects.equals(addressbook.getAddressbookUser(), sharee)) { + // Sharing with yourself! + throw new IllegalStateException("User tries to share with himself."); //NOI18N + } + + // Set all instances + this.shareAddressbook = addressbook; + this.shareUserOwner = addressbook.getAddressbookUser(); + this.shareUserSharee = sharee; + } + + @Override + public boolean equals (final Object object) { + if (null == object) { + return false; + } else if (this.getClass() != object.getClass()) { + return false; + } + + final ShareableAddressbook other = (ShareableAddressbook) object; + + if (!Objects.equals(this.getShareAddressbook(), other.getShareAddressbook())) { + return false; + } else if (!Objects.equals(this.getShareUserOwner(), other.getShareUserOwner())) { + return false; + } else if (!Objects.equals(this.getShareUserOwner(), other.getShareUserOwner())) { + return false; + } + + return Objects.equals(this.getShareUserSharee(), other.getShareUserSharee()); + } + + @Override + public int hashCode () { + int hash = 7; + hash = 19 * hash + Objects.hashCode(this.getShareAddressbook()); + hash = 19 * hash + Objects.hashCode(this.getShareUserOwner()); + hash = 19 * hash + Objects.hashCode(this.getShareUserSharee()); + return hash; + } + + @Override + public Addressbook getShareAddressbook () { + return this.shareAddressbook; + } + + @Override + public void setShareAddressbook (final Addressbook shareAddressbook) { + this.shareAddressbook = shareAddressbook; + } + + @Override + public Calendar getShareCreated () { + return this.shareCreated; + } + + @Override + public void setShareCreated (final Calendar shareCreated) { + this.shareCreated = shareCreated; + } + + @Override + public Long getShareId () { + return this.shareId; + } + + @Override + public void setShareId (final Long shareId) { + this.shareId = shareId; + } + + @Override + public User getShareUserOwner () { + return this.shareUserOwner; + } + + @Override + public void setShareUserOwner (final User shareUserOwner) { + this.shareUserOwner = shareUserOwner; + } + + @Override + public User getShareUserSharee () { + return this.shareUserSharee; + } + + @Override + public void setShareUserSharee (final User shareUserSharee) { + this.shareUserSharee = shareUserSharee; + } + +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/shared/ShareableAddressbook.java b/src/org/mxchange/jaddressbookcore/model/addressbook/shared/ShareableAddressbook.java new file mode 100644 index 0000000..912b42c --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/shared/ShareableAddressbook.java @@ -0,0 +1,106 @@ +/* + * Copyright (C) 2016 Roland Haeder + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook.shared; + +import java.io.Serializable; +import java.util.Calendar; +import org.mxchange.jaddressbookcore.model.addressbook.Addressbook; +import org.mxchange.jusercore.model.user.User; + +/** + * A POJI for shared address books + *

    + * @author Roland Haeder + */ +public interface ShareableAddressbook extends Serializable { + + /** + * Getter for shared address book instance + *

    + * @return Shared address book instance + */ + Addressbook getShareAddressbook (); + + /** + * Setter for shared address book instance + *

    + * @param shareAddressbook Shared address book instance + */ + void setShareAddressbook (final Addressbook shareAddressbook); + + /** + * Getter for id number + *

    + * @return Id number + */ + Long getShareId (); + + /** + * Setter for id number + *

    + * @param shareId Id number + */ + void setShareId (final Long shareId); + + /** + * Getter for address book owner instance + *

    + * @return Address book owner instance + */ + User getShareUserOwner (); + + /** + * Setter for address book owner instance + *

    + * @param shareUserOwner Address book owner instance + */ + void setShareUserOwner (final User shareUserOwner); + + /** + * Getter for address book sharee instance + *

    + * @return Address book sharee instance + */ + User getShareUserSharee (); + + /** + * Setter for address book sharee instance + *

    + * @param shareUserSharer Address book sharee instance + */ + void setShareUserSharee (final User shareUserSharer); + + /** + * Getter for share creation timestamp + *

    + * @return Share creation timestamp + */ + Calendar getShareCreated (); + + /** + * Setter for share creation timestamp + *

    + * @param shareCreated Share creation timestamp + */ + void setShareCreated (final Calendar shareCreated); + + @Override + boolean equals (final Object object); + + @Override + int hashCode (); +} diff --git a/src/org/mxchange/jaddressbookcore/model/addressbook/status/AddressbokStatus.java b/src/org/mxchange/jaddressbookcore/model/addressbook/status/AddressbokStatus.java new file mode 100644 index 0000000..52822e3 --- /dev/null +++ b/src/org/mxchange/jaddressbookcore/model/addressbook/status/AddressbokStatus.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2016 Cho-Time GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.mxchange.jaddressbookcore.model.addressbook.status; + +import java.io.Serializable; + +/** + * An enumeration for the addressbook status + *

    + * @author Roland Haeder + */ +public enum AddressbokStatus implements Serializable { + + /** + * When the addressbook is unlocked + */ + UNLOCKED("ADDRESSBOOK_STATUS_UNLOCKED"), //NOI18N + + /** + * When the addressbook is locked by administrator + */ + LOCKED("ADDRESSBOOK_STATUS_LOCKED"); //NOI18N + + /** + * Message key + */ + private final String messageKey; + + /** + * Constructor + *

    + * @param messageKey Message key for this enum + */ + private AddressbokStatus (final String messageKey) { + this.messageKey = messageKey; + } + + /** + * Getter for message key + *

    + * @return Message key + */ + public String getMessageKey () { + return this.messageKey; + } + +} -- 2.39.2