Commit 074aa366 by Tuomas Riihimäki

Renamed EventSettings entity and references to EventOrganiser

Added PdfPrinter which prints a pdf-bill from given Bill Entity
Added PDFJet.jar library to LanBoralBeans project
1 parent edf469a6
...@@ -4,10 +4,10 @@ import javax.ejb.EJB; ...@@ -4,10 +4,10 @@ import javax.ejb.EJB;
import javax.ejb.Stateless; import javax.ejb.Stateless;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventSettingsFacade; import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventSettings; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
/** /**
...@@ -23,7 +23,7 @@ public class EventBean implements EventBeanLocal { ...@@ -23,7 +23,7 @@ public class EventBean implements EventBeanLocal {
private EventFacade eventFacade; private EventFacade eventFacade;
@EJB @EJB
private EventSettingsFacade eventSettingsFacade; private EventOrganiserFacade eventOrganiserFacade;
@EJB @EJB
private UserFacade userFacade; private UserFacade userFacade;
...@@ -45,21 +45,21 @@ public class EventBean implements EventBeanLocal { ...@@ -45,21 +45,21 @@ public class EventBean implements EventBeanLocal {
ret = new Event(); ret = new Event();
ret.setReferer(""); ret.setReferer("");
ret.setName(DEFAULT_EVENT_NAME); ret.setName(DEFAULT_EVENT_NAME);
ret.setSettings(findOrCreateDefaultEventSettings()); ret.setOrganiser(findOrCreateDefaultEventOrganisation());
eventFacade.create(ret); eventFacade.create(ret);
} }
return ret; return ret;
} }
public EventSettings findOrCreateDefaultEventSettings() { public EventOrganiser findOrCreateDefaultEventOrganisation() {
EventSettings settings = eventSettingsFacade.findByOrganisation(DEFAULT_ORGANISATION_NAME); EventOrganiser settings = eventOrganiserFacade.findByOrganisation(DEFAULT_ORGANISATION_NAME);
if (settings == null) { if (settings == null) {
settings = new EventSettings(); settings = new EventOrganiser();
settings.setOrganisation(DEFAULT_ORGANISATION_NAME); settings.setOrganisation(DEFAULT_ORGANISATION_NAME);
User defaultUser = userFacade.getOrCreateDefaultUser(); User defaultUser = userFacade.getOrCreateDefaultUser();
settings.setAdmin(defaultUser); settings.setAdmin(defaultUser);
eventSettingsFacade.create(settings); eventOrganiserFacade.create(settings);
} }
return settings; return settings;
......
...@@ -12,13 +12,13 @@ import javax.ejb.Stateless; ...@@ -12,13 +12,13 @@ import javax.ejb.Stateless;
import fi.insomnia.bortal.facade.EventFacade; import fi.insomnia.bortal.facade.EventFacade;
import fi.insomnia.bortal.facade.EventMapFacade; import fi.insomnia.bortal.facade.EventMapFacade;
import fi.insomnia.bortal.facade.EventSettingsFacade; import fi.insomnia.bortal.facade.EventOrganiserFacade;
import fi.insomnia.bortal.facade.EventStatusFacade; import fi.insomnia.bortal.facade.EventStatusFacade;
import fi.insomnia.bortal.facade.PlaceFacade; import fi.insomnia.bortal.facade.PlaceFacade;
import fi.insomnia.bortal.facade.UserFacade; import fi.insomnia.bortal.facade.UserFacade;
import fi.insomnia.bortal.model.Event; import fi.insomnia.bortal.model.Event;
import fi.insomnia.bortal.model.EventMap; import fi.insomnia.bortal.model.EventMap;
import fi.insomnia.bortal.model.EventSettings; import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.model.EventStatus; import fi.insomnia.bortal.model.EventStatus;
import fi.insomnia.bortal.model.Place; import fi.insomnia.bortal.model.Place;
import fi.insomnia.bortal.model.User; import fi.insomnia.bortal.model.User;
...@@ -35,7 +35,7 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -35,7 +35,7 @@ public class TestDataBean implements TestDataBeanLocal {
@EJB @EJB
private EventStatusFacade eventStatusFacade; private EventStatusFacade eventStatusFacade;
@EJB @EJB
private EventSettingsFacade eventSettingsFacade; private EventOrganiserFacade eventOrganiserFacade;
@EJB @EJB
private EventFacade eventFacade; private EventFacade eventFacade;
@EJB @EJB
...@@ -101,14 +101,14 @@ public class TestDataBean implements TestDataBeanLocal { ...@@ -101,14 +101,14 @@ public class TestDataBean implements TestDataBeanLocal {
eventStatusFacade.create(status); eventStatusFacade.create(status);
EventSettings settings = new EventSettings(); EventOrganiser settings = new EventOrganiser();
settings.setOrganisation("MUN ORGANISAATIO; EI SUN!"); settings.setOrganisation("MUN ORGANISAATIO; EI SUN!");
settings.setAdmin(generateUser()); settings.setAdmin(generateUser());
eventSettingsFacade.create(settings); eventOrganiserFacade.create(settings);
Event event = new Event(); Event event = new Event();
event.setName("testEvent"); event.setName("testEvent");
event.setSettings(settings); event.setOrganiser(settings);
event.setStatus(status); event.setStatus(status);
eventFacade.create(event); eventFacade.create(event);
......
package fi.insomnia.bortal.beanutil;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.SimpleDateFormat;
import java.util.List;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.pdfjet.A4;
import com.pdfjet.CoreFont;
import com.pdfjet.Font;
import com.pdfjet.Line;
import com.pdfjet.PDF;
import com.pdfjet.Page;
import com.pdfjet.TextLine;
import fi.insomnia.bortal.beanutil.pdfprinter.LineStyle;
import fi.insomnia.bortal.model.Bill;
import fi.insomnia.bortal.model.BillLine;
import fi.insomnia.bortal.model.EventOrganiser;
import fi.insomnia.bortal.utilities.BillUtils;
public class PdfPrinter {
private static final String fontname = CoreFont.HELVETICA;
private static final String boldfontname = CoreFont.HELVETICA_BOLD;
private static final String EURO = " EUR";
// Legacy y-coordinater reverse constant
private static final double INVERT = 840;
private static final BigDecimal DEPERCENTER = new BigDecimal(100);
// private Biller billerInfo = new Biller();
// private Receiver receiver = new Receiver();
private Page page;
private PDF pdf;
private Bill bill;
private static final Logger logger = LoggerFactory.getLogger(PdfPrinter.class);
public PdfPrinter(Bill printable) {
bill = printable;
}
public boolean output(OutputStream ostream) {
try {
pdf = new PDF();
page = new Page(pdf, A4.PORTRAIT);
// bill = testLines();
drawHeader();
drawProducts(bill.getBillLines());
pankkisiirto();
pdf.wrap();
// String fileName = "/Users/tuomari/Example_01.pdf";
// FileOutputStream fos = new FileOutputStream(fileName);
// pdf.getData().writeTo(fos);
// fos.close();
pdf.getData().writeTo(ostream);
} catch (Exception e) {
logger.warn("Error printing bill "+bill+" to stream", e);
return false;
}
return true;
}
private void drawProducts(List<BillLine> prods) throws Exception {
Font pagetext = new Font(pdf, fontname);
pagetext.setSize(11);
Font pagetitle = new Font(pdf, boldfontname);
pagetitle.setSize(11);
// Ihan ensin tulostetaan selityskentät tuotteille.
drawText(20, 640, "Tuotteet", pagetitle);
drawText(210, 640, "Määrä", pagetitle);
drawText(250, 640, "Yks.", pagetitle);
drawText(295, 640, "A-hinta", pagetitle);
drawText(362, 640, "Veroton", pagetitle);
drawText(450, 640, "Alv, (%)", pagetitle);
drawText(520, 640, "Yhteensä", pagetitle);
boolean firstpage = true;
double height = 625.0;
for (BillLine line : prods) {
if (firstpage && height < 625 - (15 * 17)) {
drawText(250, 800, "Sivu 1/2", pagetext);
page = new Page(pdf, A4.PORTRAIT);
drawHeader();
// $this->pdfheader($pdf, $firstpage, $fontit, $laskuArray,
// $summaArray,$setupArray);
// $this->infoKentat($pdf, $firstpage, $setupArray, $fontit,
// 15);
drawText(250, 800, "Sivu 2/2", pagetext);
height = 625;
}
// $kerroin = 5;
// $ykshinta = help::pilkoLuku($tuote['hinta']);
// $kokhinta =
// help::pilkoLuku(floatval($tuote['hinta'])*floatval($tuote['lkm']));
// $alvhinta =
// help::pilkoLuku(floatval($tuote['hinta'])*floatval($tuote['lkm'])*
// (floatval($tuote['alv'])/100)) .
// " (" . help::pilkoluku($tuote['alv']) . ")";
//
//
// $yhthinta = help::pilkoLuku($tuote['hinta'] * $tuote['lkm'] *
// ($tuote['alv']/100 + 1));
drawText(20, height, line.getName(), pagetext);
drawText(239, height, line.getQuantity(), pagetext);
drawText(252, height, line.getUnitName(), pagetext);
drawText(332, height, line.getUnitPrice(), pagetext);
drawText(402, height, line.getLinePriceVatless(), pagetext);
String vat = decRound(line.getLineVat()) + " (" + DEPERCENTER.multiply(line.getVat()).setScale(0, RoundingMode.HALF_UP) + ")";
drawText(490 - pagetext.stringWidth(vat), height, vat, pagetext);
drawText(567, height, line.getLinePrice(), pagetext);
height -= 15;
}
}
private void drawText(double x, double y, BigDecimal num, Font font) throws Exception {
String nnum = num.setScale(2, RoundingMode.HALF_UP).toString();
drawText(x - font.stringWidth(nnum), y, nnum, font);
}
private void drawSender(int xpos, int ystart) throws Exception {
Font sendername = new Font(pdf, boldfontname);
sendername.setSize(20);
Font addressfont = new Font(pdf, fontname);
addressfont.setSize(12);
// User user = bill.getUser();
int space = 12;
EventOrganiser org = bill.getEvent().getOrganiser();
drawText(xpos, ystart, org.getBillAddress1(), sendername);
drawText(xpos, ystart - space, org.getBillAddress2(), addressfont);
drawText(xpos, ystart - space * 2, org.getBillAddress3(), addressfont);
drawText(xpos, ystart - space * 3, org.getBillAddress4(), addressfont);
}
private void drawHeader() throws Exception {
Font addressfont = new Font(pdf, fontname);
addressfont.setSize(12);
drawSender(40, 800);
Font receivername = new Font(pdf, boldfontname);
receivername.setSize(13);
drawText(70, 730, bill.getAddr1(), receivername);
drawText(70, 718, bill.getAddr2(), addressfont);
drawText(70, 706, bill.getAddr3(), addressfont);
drawText(70, 694, bill.getAddr4(), addressfont);
drawText(70, 682, bill.getAddr5(), addressfont);
drawThinLine(10, 660, 585, 660);
drawThinLine(300, 660, 300, 820);
drawThinLine(300, 820, 585, 820);
drawThinLine(440, 760, 440, 820);
drawThinLine(300, 800, 585, 800);
drawThinLine(300, 780, 585, 780);
drawThinLine(300, 760, 585, 760);
Font descriptionfont = new Font(pdf, fontname);
descriptionfont.setSize(8);
Font infofont = new Font(pdf, fontname);
infofont.setSize(11);
drawText(302, 812, "Päivämäärä", descriptionfont);
drawText(355, 805, DATE_FORMAT.format(bill.getSentDate().getTime()), infofont);
drawText(442, 812, "Eräpäivä", descriptionfont);
drawText(485, 805, DATE_FORMAT.format(bill.getDueDate().getTime()), infofont);
drawText(302, 772, "Maksuehdot", descriptionfont);
drawText(355, 765, bill.getPaymentTime() + " pv Netto", infofont);
drawText(442, 792, "Laskun numero", descriptionfont);
drawText(510, 785, bill.getBillNumber().toString(), infofont);
drawText(442, 772, "Huomautusaika", descriptionfont);
drawText(510, 765, bill.getNoticetime(), infofont);
drawText(302, 792, "Viitenumero", descriptionfont);
drawText(355, 785, BillUtils.createReferenceNumber(bill.getReferenceNumberBase()).toString(), infofont);
drawThinLine(300, 740, 585, 740);
drawText(302, 732, "Viitteenne", descriptionfont);
drawText(355, 725, bill.getTheirReference(), infofont);
drawText(302, 712, "Viitteemme", descriptionfont);
drawText(355, 705, bill.getOurReference(), infofont);
drawThinLine(300, 720, 585, 720);
drawText(302, 752, "Toimitus", descriptionfont);
drawText(355, 745, bill.getDeliveryTerms(), infofont);
drawThinLine(300, 700, 585, 700);
drawThinLine(300, 680, 585, 680);
drawThinLine(470, 660, 470, 700);
drawText(472, 692, "ALV", descriptionfont);
drawText(490, 685, decRound(bill.totalVat()) + EURO, infofont);
drawText(302, 692, "0% ALV", descriptionfont);
drawText(355, 685, decRound(bill.totalPriceVatless()) + EURO, infofont);
drawText(302, 672, "Yhteensä", descriptionfont);
drawText(355, 665, decRound(bill.totalPrice()) + EURO, infofont);
drawText(472, 672, "Viivästyskorko", descriptionfont);
drawText(530, 665, bill.getDelayIntrest() + "%", infofont);
// drawText( 490, 665, "ALV Rek.",'mediumTeksti');
// Alkuosa loppuu
}
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("dd.MM.yyyy");
private static String decRound(BigDecimal num) {
return num.setScale(2, RoundingMode.HALF_UP).toString();
}
private void pankkisiirto() throws Exception {
// Pankkisiirtolappuosuus.
// Paksu alavasen
drawLine(new double[] { 10, 317, 317 }, new double[] { 102, 102, 78 });
// Iso paksu oikealla.
drawLine(new double[] { 317, 317, 576 }, new double[] { 278, 102, 102 });
// Paksu maksajan ympärillä vasen ylä
drawLine(new double[] { 10, 57, 57 }, new double[] { 240, 240, 198 });
// paksu ylin vasemmalla
drawLine(new double[] { 57, 57, 317 }, new double[] { 278, 240, 240 });
// Alimmainen viiva
drawLine(10, 78, 576, 78);
// Viitenro:n yl&auml;puolella
drawLine(317, 126, 576, 126);
// pysty viite ja eräpäivän erotin
drawLine(348, 126, 348, 78);
// eräpäivä ja euroerotin.
drawLine(442, 102, 442, 78);
// Saajan ja maksajan v&auml;liss&auml;
drawLine(10, 198, 317, 198);
// ohuet
// Allekirjoitus
drawThinLine(57, 114, 317, 114);
// Tilin erotin
drawThinLine(57.6, 78, 57.6, 102);
// pienet v&auml;k&auml;set
for (double i = 72; i < 275; i += 14.4) {
drawThinLine(new double[] { i, i }, new double[] { 78, 85.2 });
}
// Viiva v&auml;k&auml;sten v&auml;liin
drawLine(149, 84, 154, 84);
// Tulostetaan katkoviiva Tilisiirron yl&auml;puolelle.
for (double i = 10; i < 576; i = i + 20) {
drawThinLine(new double[] { i, i + 10 }, new double[] { 288, 288 });
}
// $pdf->draw_text()
// kirjoitukset
Font billfont = new Font(pdf, fontname);
billfont.setSize(7);
drawText(31, 267, "Saajan", billfont);
drawText(23, 261, "tilinumero", billfont);
drawText(14, 255, "Mottagarens", billfont);
drawText(10, 249, "kontonummer", billfont);
drawText(35, 220, "Saaja", billfont);
drawText(22, 214, "Mottagare", billfont);
drawText(27, 180, "Maksaja", billfont);
drawText(27, 174, "Betalare", billfont);
drawText(18, 120, "Allekirjoitus", billfont);
drawText(19, 114, "Undesrkrift", billfont);
drawText(25, 91, "Tililtä nro", billfont);
drawText(12, 85, "Från konto nr", billfont);
Font titletext = new Font(pdf, boldfontname);
titletext.setSize(10);
drawText(320, 267, "TILISIIRTO GIRERING", titletext);
Font smallPrint = new Font(pdf, fontname);
smallPrint.setSize(5);
drawText(320, 260, "Maksu välitetään saajalle vain Suomessa Kotimaan maksujenvälituksen yleisten", smallPrint);
drawText(320, 255, "ehtojen mukaisesti ja vain maksajan ilmoittaman tilinumeron perusteella.", smallPrint);
drawText(320, 248, "Betalningen förmedlas fill mottagare endast i Finland enligt Allmänna vllkor för", smallPrint);
drawText(320, 243, "inrikes betalningsförmedling och endast till det kontonummer betalaren angivit.", smallPrint);
drawText(319, 116, "Viitenro", billfont);
drawText(319, 108, "Ref.nr", billfont);
drawText(319, 92, "Eräpäivä", billfont);
drawText(319, 84, "Forf.dag", billfont);
drawText(444, 95, "Euro", billfont);
Font banktext = new Font(pdf, boldfontname);
banktext.setSize(8);
drawText(545, 24, "PANKKI", banktext);
drawText(542, 15, "BANKEN", banktext);
// laskun tiedot
Font addrfont = new Font(pdf, fontname);
addrfont.setSize(11); // Tulostetaan tekstit pankkisiirtolomakkeeseen.
Font receivername = new Font(pdf, boldfontname);
receivername.setSize(12);
// Laskuttajan tiedot
EventOrganiser organiser = bill.getEvent().getOrganiser();
drawText(70, 220, organiser.getBillAddress1(), receivername);
drawText(70, 265, organiser.getBankNumber1() + " " + organiser.getBankName1(), addrfont);
drawText(70, 250, organiser.getBankNumber2() + " " + organiser.getBankName2(), addrfont);
drawText(70, 180, bill.getAddr1(), receivername);
drawText(70, 168, bill.getAddr2(), addrfont);
drawText(70, 156, bill.getAddr3(), addrfont);
drawText(70, 144, bill.getAddr4(), addrfont);
drawText(70, 132, bill.getAddr5(), addrfont);
drawText(355, 110, "Laskun ID", addrfont);
drawText(465, 86, decRound(bill.totalPrice()), addrfont);
drawText(355, 86, "Erapaiva", addrfont);
}
private void drawThinLine(double[] ds, double[] ds2) throws Exception {
drawLine(ds, ds2, LineStyle.THIN);
}
private void drawLine(double[] xs, double[] ys) throws Exception {
drawLine(xs, ys, LineStyle.NORMAL);
}
private void drawLine(double[] ds, double[] ds2, LineStyle style) throws Exception {
for (int i = 0; i + 1 < ds.length && i + 1 < ds2.length; ++i) {
drawLine(ds[i], ds2[i], ds[i + 1], ds2[i + 1], style);
}
}
private void drawThinLine(double x1, double y1, double x2, double y2) throws Exception {
drawLine(x1, y1, x2, y2, LineStyle.THIN);
}
private void drawLine(int x1, int y1, int x2, int y2) throws Exception {
drawLine((double) x1, (double) y1, (double) x2, (double) y2, LineStyle.NORMAL);
}
private void drawLine(double x1, double y1, double x2, double y2, LineStyle style) throws Exception {
y1 = INVERT - y1;
y2 = INVERT - y2;
Line l = new Line(x1, y1, x2, y2);
double width = 1.0;
switch (style) {
case THIN:
width = 0.38;
break;
case THICK:
width = 1.45;
break;
default:
width = 1.0;
break;
}
l.setWidth(width);
l.drawOn(page);
}
private void drawText(double x, double y, String string, Font font) throws Exception {
TextLine text = new TextLine(font, string);
y = INVERT - y;
text.setPosition(x, y);
text.drawOn(page);
}
//
// text.setFont(f2);
// text.setPosition(70.0, 80.0);
// text.drawOn(page);
//
//
// Line l2 = new Line(20.0,30.0,30.0,20.0);
// l2.setWidth(1.45);
// l2.drawOn(page);
//
//
// public static void main(String[] args) {
// PdfPrinter.printToStream(null);
// }
}
package fi.insomnia.bortal.beanutil.pdfprinter;
public enum LineStyle {
THIN, THICK, NORMAL
}
...@@ -6,25 +6,25 @@ import javax.persistence.EntityManager; ...@@ -6,25 +6,25 @@ import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext; import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery; import javax.persistence.TypedQuery;
import fi.insomnia.bortal.model.EventSettings; import fi.insomnia.bortal.model.EventOrganiser;
@Stateless @Stateless
@LocalBean @LocalBean
public class EventSettingsFacade extends GenericFacade<Integer, EventSettings> { public class EventOrganiserFacade extends GenericFacade<Integer, EventOrganiser> {
@PersistenceContext @PersistenceContext
private EntityManager em; private EntityManager em;
public EventSettingsFacade() { public EventOrganiserFacade() {
super(EventSettings.class); super(EventOrganiser.class);
} }
protected EntityManager getEm() { protected EntityManager getEm() {
return em; return em;
} }
public EventSettings findByOrganisation(String organisation) { public EventOrganiser findByOrganisation(String organisation) {
TypedQuery<EventSettings> q = em.createNamedQuery("EventSettings.findByOrganisation", EventSettings.class); TypedQuery<EventOrganiser> q = em.createNamedQuery("EventOrganiser.findByOrganisation", EventOrganiser.class);
q.setParameter("organisation", organisation); q.setParameter("organisation", organisation);
return getSingleNullableResult(q); return getSingleNullableResult(q);
} }
......
No preview for this file type
...@@ -30,7 +30,7 @@ import javax.persistence.Version; ...@@ -30,7 +30,7 @@ import javax.persistence.Version;
*/ */
@Entity @Entity
@Table(name = "account_events") @Table(name = "account_events")
@NamedQueries( { @NamedQueries({
@NamedQuery(name = "AccountEvent.findAll", query = "SELECT a FROM AccountEvent a"), @NamedQuery(name = "AccountEvent.findAll", query = "SELECT a FROM AccountEvent a"),
@NamedQuery(name = "AccountEvent.findByUnitPrice", query = "SELECT a FROM AccountEvent a WHERE a.unitPrice = :unitPrice"), @NamedQuery(name = "AccountEvent.findByUnitPrice", query = "SELECT a FROM AccountEvent a WHERE a.unitPrice = :unitPrice"),
@NamedQuery(name = "AccountEvent.findByUnits", query = "SELECT a FROM AccountEvent a WHERE a.units = :units"), @NamedQuery(name = "AccountEvent.findByUnits", query = "SELECT a FROM AccountEvent a WHERE a.units = :units"),
...@@ -72,7 +72,7 @@ public class AccountEvent implements EventChildInterface { ...@@ -72,7 +72,7 @@ public class AccountEvent implements EventChildInterface {
* If this AccountEvent is a product in foodwace, this field is a reference * If this AccountEvent is a product in foodwace, this field is a reference
* to that foodwave. * to that foodwave.
*/ */
@JoinColumns( { @JoinColumns({
@JoinColumn(name = "food_wave_id", referencedColumnName = "id"), @JoinColumn(name = "food_wave_id", referencedColumnName = "id"),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", updatable = false, insertable = false) })
@ManyToOne @ManyToOne
...@@ -82,7 +82,7 @@ public class AccountEvent implements EventChildInterface { ...@@ -82,7 +82,7 @@ public class AccountEvent implements EventChildInterface {
* The product user has acquired and this this AccountEvent is a reference * The product user has acquired and this this AccountEvent is a reference
* to. * to.
*/ */
@JoinColumns( { @JoinColumns({
@JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false), @JoinColumn(name = "product_id", referencedColumnName = "id", nullable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne(optional = false) @ManyToOne(optional = false)
...@@ -113,7 +113,7 @@ public class AccountEvent implements EventChildInterface { ...@@ -113,7 +113,7 @@ public class AccountEvent implements EventChildInterface {
* When user has paid a bill a Account event for product "Credit" is created * When user has paid a bill a Account event for product "Credit" is created
* and reference to that bill is here.. * and reference to that bill is here..
*/ */
@JoinColumns( { @JoinColumns({
@JoinColumn(name = "bill_id", referencedColumnName = "id", nullable = false, updatable = false, insertable = false), @JoinColumn(name = "bill_id", referencedColumnName = "id", nullable = false, updatable = false, insertable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@OneToOne @OneToOne
......
...@@ -23,6 +23,7 @@ import javax.persistence.Table; ...@@ -23,6 +23,7 @@ import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
import javax.persistence.TemporalType; import javax.persistence.TemporalType;
import javax.persistence.Version; import javax.persistence.Version;
import static javax.persistence.TemporalType.DATE;
/** /**
* The system can send bills to the users. When user pays bill a AccountEvent * The system can send bills to the users. When user pays bill a AccountEvent
...@@ -31,7 +32,7 @@ import javax.persistence.Version; ...@@ -31,7 +32,7 @@ import javax.persistence.Version;
*/ */
@Entity @Entity
@Table(name = "bills") @Table(name = "bills")
@NamedQueries( { @NamedQueries({
@NamedQuery(name = "Bill.findAll", query = "SELECT b FROM Bill b"), @NamedQuery(name = "Bill.findAll", query = "SELECT b FROM Bill b"),
@NamedQuery(name = "Bill.findByDueDate", query = "SELECT b FROM Bill b WHERE b.dueDate = :dueDate"), @NamedQuery(name = "Bill.findByDueDate", query = "SELECT b FROM Bill b WHERE b.dueDate = :dueDate"),
...@@ -60,12 +61,38 @@ public class Bill implements EventChildInterface { ...@@ -60,12 +61,38 @@ public class Bill implements EventChildInterface {
private Calendar paidDate; private Calendar paidDate;
/** /**
* Reference number of the bill. * The bill number from which the reference number will be generated
* *
* @See http://www.fkl.fi/www/page/fk_www_1293 * @See http://www.fkl.fi/www/page/fk_www_1293
*
*/ */
@Column(name = "reference_number") @Column(name = "bill_number")
private String referenceNumber; private Integer billNumber;
/**
* Address where the bill should be sent;
*/
private String addr1;
private String addr2;
private String addr3;
private String addr4;
private String addr5;
@Column(nullable = false, name = "sent_time")
@Temporal(DATE)
private Calendar sentDate = Calendar.getInstance();
@Column(name = "payment_time", nullable = false)
private Integer paymentTime = 0;
@Column(name = "notice_days", nullable = false)
private String noticetime = "8 vrk";
@Column(name = "their_reference", nullable = false)
private String theirReference = "";
@Column(name = "our_reference", nullable = false)
private String ourReference = "";
@Column(name = "delivery_terms", nullable = false)
private String deliveryTerms = "";
@Column(name = "delay_intrest", nullable = false)
private Integer delayIntrest = 11;
/** /**
* Notes for the event organisators about the bill. * Notes for the event organisators about the bill.
...@@ -84,7 +111,7 @@ public class Bill implements EventChildInterface { ...@@ -84,7 +111,7 @@ public class Bill implements EventChildInterface {
* When the bill is paid this AccountEvent is created and this is a * When the bill is paid this AccountEvent is created and this is a
* reference to that accountAction. * reference to that accountAction.
*/ */
@JoinColumns( { @JoinColumns({
@JoinColumn(name = "account_event_id", referencedColumnName = "id", updatable = false), @JoinColumn(name = "account_event_id", referencedColumnName = "id", updatable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", updatable = false, insertable = false) })
@OneToOne @OneToOne
...@@ -101,6 +128,10 @@ public class Bill implements EventChildInterface { ...@@ -101,6 +128,10 @@ public class Bill implements EventChildInterface {
@JoinColumn(name = "event_id", referencedColumnName = "event_id", updatable = false, insertable = false) @JoinColumn(name = "event_id", referencedColumnName = "event_id", updatable = false, insertable = false)
private Event event; private Event event;
public Integer getReferenceNumberBase() {
return event.getReferenceNumberBase() + billNumber;
}
/** /**
* Commodity function to calculate the total price of the bill. * Commodity function to calculate the total price of the bill.
* *
...@@ -115,6 +146,19 @@ public class Bill implements EventChildInterface { ...@@ -115,6 +146,19 @@ public class Bill implements EventChildInterface {
} }
/** /**
* Commodity function to calculate the total price of the bill.
*
* @return The total sum of the bill ( unitPrice * units * vat )
*/
public BigDecimal totalVat() {
BigDecimal total = BigDecimal.ZERO;
for (BillLine line : getBillLines()) {
total = total.add(line.getLineVat());
}
return total;
}
/**
* Commodity function to return the vatless price of the bill * Commodity function to return the vatless price of the bill
* *
* @return The total VAT-less sum of the bill ( unitPrice * units ) * @return The total VAT-less sum of the bill ( unitPrice * units )
...@@ -164,14 +208,6 @@ public class Bill implements EventChildInterface { ...@@ -164,14 +208,6 @@ public class Bill implements EventChildInterface {
this.paidDate = paidDate; this.paidDate = paidDate;
} }
public String getReferenceNumber() {
return referenceNumber;
}
public void setReferenceNumber(String referenceNumber) {
this.referenceNumber = referenceNumber;
}
public String getNotes() { public String getNotes() {
return notes; return notes;
} }
...@@ -248,4 +284,109 @@ public class Bill implements EventChildInterface { ...@@ -248,4 +284,109 @@ public class Bill implements EventChildInterface {
public Event getEvent() { public Event getEvent() {
return event; return event;
} }
public void setBillNumber(Integer billNumber) {
this.billNumber = billNumber;
}
public Integer getBillNumber() {
return billNumber;
}
public String getAddr1() {
return addr1;
}
public void setAddr1(String addr1) {
this.addr1 = addr1;
}
public String getAddr2() {
return addr2;
}
public void setAddr2(String addr2) {
this.addr2 = addr2;
}
public String getAddr3() {
return addr3;
}
public void setAddr3(String addr3) {
this.addr3 = addr3;
}
public String getAddr4() {
return addr4;
}
public void setAddr4(String addr4) {
this.addr4 = addr4;
}
public String getAddr5() {
return addr5;
}
public void setAddr5(String addr5) {
this.addr5 = addr5;
}
public Calendar getSentDate() {
return sentDate;
}
public void setSentDate(Calendar sentDate) {
this.sentDate = sentDate;
}
public String getNoticetime() {
return noticetime;
}
public void setNoticetime(String noticetime) {
this.noticetime = noticetime;
}
public String getOurReference() {
return ourReference;
}
public void setOurReference(String ourReference) {
this.ourReference = ourReference;
}
public void setTheirReference(String theirReference) {
this.theirReference = theirReference;
}
public String getTheirReference() {
return theirReference;
}
public void setDeliveryTerms(String deliveryTerms) {
this.deliveryTerms = deliveryTerms;
}
public String getDeliveryTerms() {
return deliveryTerms;
}
public void setPaymentTime(Integer paymentTime) {
this.paymentTime = paymentTime;
}
public Integer getPaymentTime() {
return paymentTime;
}
public void setDelayIntrest(Integer delayIntrest) {
this.delayIntrest = delayIntrest;
}
public Integer getDelayIntrest() {
return delayIntrest;
}
} }
...@@ -23,7 +23,7 @@ import javax.persistence.Version; ...@@ -23,7 +23,7 @@ import javax.persistence.Version;
*/ */
@Entity @Entity
@Table(name = "bill_lines") @Table(name = "bill_lines")
@NamedQueries( { @NamedQueries({
@NamedQuery(name = "BillLine.findAll", query = "SELECT b FROM BillLine b"), @NamedQuery(name = "BillLine.findAll", query = "SELECT b FROM BillLine b"),
@NamedQuery(name = "BillLine.findByProduct", query = "SELECT b FROM BillLine b WHERE b.name = :name"), @NamedQuery(name = "BillLine.findByProduct", query = "SELECT b FROM BillLine b WHERE b.name = :name"),
...@@ -57,6 +57,12 @@ public class BillLine implements EventChildInterface { ...@@ -57,6 +57,12 @@ public class BillLine implements EventChildInterface {
private BigDecimal unitPrice = BigDecimal.ZERO; private BigDecimal unitPrice = BigDecimal.ZERO;
/** /**
*
*/
@Column(name = "unit_name", nullable = false)
private String unitName = "";
/**
* How much VAT this product contains ( 0, 0.22 ) etc * How much VAT this product contains ( 0, 0.22 ) etc
*/ */
@Column(name = "vat", nullable = false, precision = 3, scale = 2) @Column(name = "vat", nullable = false, precision = 3, scale = 2)
...@@ -65,7 +71,7 @@ public class BillLine implements EventChildInterface { ...@@ -65,7 +71,7 @@ public class BillLine implements EventChildInterface {
/** /**
* Which bill this bill line belongs to * Which bill this bill line belongs to
*/ */
@JoinColumns( { @JoinColumns({
@JoinColumn(name = "bill_id", referencedColumnName = "id", nullable = false, updatable = false), @JoinColumn(name = "bill_id", referencedColumnName = "id", nullable = false, updatable = false),
@JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) }) @JoinColumn(name = "event_id", referencedColumnName = "event_id", nullable = false, updatable = false, insertable = false) })
@ManyToOne @ManyToOne
...@@ -85,6 +91,10 @@ public class BillLine implements EventChildInterface { ...@@ -85,6 +91,10 @@ public class BillLine implements EventChildInterface {
return getLinePriceVatless().multiply(vatMultiplicand); return getLinePriceVatless().multiply(vatMultiplicand);
} }
public BigDecimal getLineVat() {
return getLinePriceVatless().multiply(getVat());
}
/** /**
* Calculate the total VAT-less price for the items on this lin * Calculate the total VAT-less price for the items on this lin
* *
...@@ -102,9 +112,10 @@ public class BillLine implements EventChildInterface { ...@@ -102,9 +112,10 @@ public class BillLine implements EventChildInterface {
this.bill = bill; this.bill = bill;
} }
public BillLine(Event event, Bill bill, String product, BigDecimal units, public BillLine(Event event, Bill bill, String product, String unitName, BigDecimal units,
BigDecimal unitPrice, BigDecimal vat) { BigDecimal unitPrice, BigDecimal vat) {
this(event, bill); this(event, bill);
this.unitName = unitName;
this.name = product; this.name = product;
this.setQuantity(units); this.setQuantity(units);
this.setUnitPrice(unitPrice); this.setUnitPrice(unitPrice);
...@@ -198,4 +209,12 @@ public class BillLine implements EventChildInterface { ...@@ -198,4 +209,12 @@ public class BillLine implements EventChildInterface {
return vat; return vat;
} }
public void setUnitName(String unitName) {
this.unitName = unitName;
}
public String getUnitName() {
return unitName;
}
} }
...@@ -58,9 +58,17 @@ public class Event implements ModelInterface<Integer> { ...@@ -58,9 +58,17 @@ public class Event implements ModelInterface<Integer> {
@Column(name = "referer") @Column(name = "referer")
private String referer; private String referer;
@JoinColumn(name = "event_settings_id", referencedColumnName = "event_settings_id", nullable = false, updatable = false) /**
* Bill's reference number will be formed by adding
* this number to the bill number and adding the
* checksum of that number as the last digit
*/
private Integer referenceNumberBase = 54321;
@JoinColumn(name = "event_organiser_id", referencedColumnName = "event_organiser_id", nullable = false, updatable = false)
@ManyToOne(optional = false) @ManyToOne(optional = false)
private EventSettings settings; private EventOrganiser organiser;
@JoinColumn(name = "event_status_id", referencedColumnName = "event_status_id", nullable = false) @JoinColumn(name = "event_status_id", referencedColumnName = "event_status_id", nullable = false)
@ManyToOne(optional = false) @ManyToOne(optional = false)
...@@ -97,14 +105,6 @@ public class Event implements ModelInterface<Integer> { ...@@ -97,14 +105,6 @@ public class Event implements ModelInterface<Integer> {
public Event() { public Event() {
} }
public Event(EventSettings settings) {
this.settings = settings;
}
public Event(EventSettings settings, String name) {
this.settings = settings;
this.name = name;
}
public Calendar getStartTime() { public Calendar getStartTime() {
return startTime; return startTime;
...@@ -138,14 +138,6 @@ public class Event implements ModelInterface<Integer> { ...@@ -138,14 +138,6 @@ public class Event implements ModelInterface<Integer> {
this.referer = referer; this.referer = referer;
} }
public EventSettings getSettings() {
return settings;
}
public void setSettings(EventSettings eventSettingsId) {
this.settings = eventSettingsId;
}
public EventStatus getStatus() { public EventStatus getStatus() {
return status; return status;
} }
...@@ -284,4 +276,25 @@ public class Event implements ModelInterface<Integer> { ...@@ -284,4 +276,25 @@ public class Event implements ModelInterface<Integer> {
public void setReaders(List<Reader> readers) { public void setReaders(List<Reader> readers) {
this.readers = readers; this.readers = readers;
} }
public void setOrganiser(EventOrganiser organiser) {
this.organiser = organiser;
}
public EventOrganiser getOrganiser() {
return organiser;
}
public void setReferenceNumberBase(Integer referenceNumberBase) {
this.referenceNumberBase = referenceNumberBase;
}
public Integer getReferenceNumberBase() {
return referenceNumberBase;
}
} }
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
package fi.insomnia.bortal.model; package fi.insomnia.bortal.model;
import java.io.Serializable;
/** /**
* *
......
...@@ -15,7 +15,6 @@ import javax.persistence.Column; ...@@ -15,7 +15,6 @@ import javax.persistence.Column;
import javax.persistence.EmbeddedId; import javax.persistence.EmbeddedId;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.Lob; import javax.persistence.Lob;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries; import javax.persistence.NamedQueries;
......
...@@ -24,17 +24,17 @@ import javax.persistence.Version; ...@@ -24,17 +24,17 @@ import javax.persistence.Version;
* *
*/ */
@Entity @Entity
@Table(name = "event_settings") @Table(name = "event_organiser")
@NamedQueries( { @NamedQueries( {
@NamedQuery(name = "EventSettings.findAll", query = "SELECT e FROM EventSettings e"), @NamedQuery(name = "EventOrganiser.findAll", query = "SELECT e FROM EventOrganiser e"),
@NamedQuery(name = "EventSettings.findByOrganisation", query = "SELECT e FROM EventSettings e WHERE e.organisation = :organisation"), @NamedQuery(name = "EventOrganiser.findByOrganisation", query = "SELECT e FROM EventOrganiser e WHERE e.organisation = :organisation"),
@NamedQuery(name = "EventSettings.findByBundleCountry", query = "SELECT e FROM EventSettings e WHERE e.bundleCountry = :bundleCountry") }) @NamedQuery(name = "EventOrganiser.findByBundleCountry", query = "SELECT e FROM EventOrganiser e WHERE e.bundleCountry = :bundleCountry") })
public class EventSettings implements ModelInterface<Integer> { public class EventOrganiser implements ModelInterface<Integer> {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "event_settings_id", nullable = false) @Column(name = "event_organiser_id", nullable = false)
private Integer id; private Integer id;
@Column(name = "organisation") @Column(name = "organisation")
...@@ -43,7 +43,7 @@ public class EventSettings implements ModelInterface<Integer> { ...@@ -43,7 +43,7 @@ public class EventSettings implements ModelInterface<Integer> {
@Column(name = "bundle_country") @Column(name = "bundle_country")
private String bundleCountry; private String bundleCountry;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "settings") @OneToMany(cascade = CascadeType.ALL, mappedBy = "organiser")
private List<Event> events; private List<Event> events;
@ManyToOne @ManyToOne
...@@ -54,7 +54,26 @@ public class EventSettings implements ModelInterface<Integer> { ...@@ -54,7 +54,26 @@ public class EventSettings implements ModelInterface<Integer> {
@Column(nullable = false) @Column(nullable = false)
private int jpaVersionField = 0; private int jpaVersionField = 0;
public EventSettings() { @Column(nullable = false,name="bill_address1")
private String billAddress1 = "";
@Column(nullable = false,name="bill_address2")
private String billAddress2 = "";
@Column(nullable = false,name="bill_address3")
private String billAddress3 = "";
@Column(nullable = false,name="bill_address4")
private String billAddress4 = "";
@Column(nullable = false,name="bank_number1")
private String bankNumber1;
@Column(nullable = false,name="bank_number2")
private String bankNumber2;
@Column(nullable = false,name="bank_name1")
private String bankName1;
@Column(nullable = false,name="bank_name2")
private String bankName2;
public EventOrganiser() {
} }
public List<Event> getEvents() { public List<Event> getEvents() {
...@@ -76,10 +95,10 @@ public class EventSettings implements ModelInterface<Integer> { ...@@ -76,10 +95,10 @@ public class EventSettings implements ModelInterface<Integer> {
public boolean equals(Object object) { public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are // TODO: Warning - this method won't work in the case the id fields are
// not set // not set
if (!(object instanceof EventSettings)) { if (!(object instanceof EventOrganiser)) {
return false; return false;
} }
EventSettings other = (EventSettings) object; EventOrganiser other = (EventOrganiser) object;
if ((this.getId() == null && other.getId() != null) if ((this.getId() == null && other.getId() != null)
|| (this.getId() != null && !this.id.equals(other.id))) { || (this.getId() != null && !this.id.equals(other.id))) {
return false; return false;
...@@ -89,7 +108,7 @@ public class EventSettings implements ModelInterface<Integer> { ...@@ -89,7 +108,7 @@ public class EventSettings implements ModelInterface<Integer> {
@Override @Override
public String toString() { public String toString() {
return "fi.insomnia.bortal.model.EventSettings[id=" + getId() + "]"; return "fi.insomnia.bortal.model.EventOrganiser[id=" + getId() + "]";
} }
/** /**
...@@ -170,4 +189,69 @@ public class EventSettings implements ModelInterface<Integer> { ...@@ -170,4 +189,69 @@ public class EventSettings implements ModelInterface<Integer> {
public void setAdmin(User admin) { public void setAdmin(User admin) {
this.admin = admin; this.admin = admin;
} }
public String getBillAddress1() {
return billAddress1;
}
public void setBillAddress1(String billAddress1) {
this.billAddress1 = billAddress1;
}
public String getBillAddress2() {
return billAddress2;
}
public void setBillAddress2(String billAddress2) {
this.billAddress2 = billAddress2;
}
public String getBillAddress3() {
return billAddress3;
}
public void setBillAddress3(String billAddress3) {
this.billAddress3 = billAddress3;
}
public String getBillAddress4() {
return billAddress4;
}
public void setBillAddress4(String billAddress4) {
this.billAddress4 = billAddress4;
}
public String getBankNumber1() {
return bankNumber1;
}
public void setBankNumber1(String bankNumber1) {
this.bankNumber1 = bankNumber1;
}
public String getBankNumber2() {
return bankNumber2;
}
public void setBankNumber2(String bankNumber2) {
this.bankNumber2 = bankNumber2;
}
public String getBankName1() {
return bankName1;
}
public void setBankName1(String bankName1) {
this.bankName1 = bankName1;
}
public String getBankName2() {
return bankName2;
}
public void setBankName2(String bankName2) {
this.bankName2 = bankName2;
}
} }
...@@ -30,7 +30,7 @@ public class EventPk implements Serializable { ...@@ -30,7 +30,7 @@ public class EventPk implements Serializable {
super(); super();
this.eventId = event.getId(); this.eventId = event.getId();
} }
public EventPk(Integer eventId) { public EventPk(Integer eventId) {
super(); super();
this.eventId = eventId; this.eventId = eventId;
...@@ -59,6 +59,10 @@ public class EventPk implements Serializable { ...@@ -59,6 +59,10 @@ public class EventPk implements Serializable {
return pk.id == this.id && pk.eventId == this.eventId; return pk.id == this.id && pk.eventId == this.eventId;
} }
@Override
public String toString() {
return "fi.insomnia.bortal.model.EventPk[id=" + id + ", eventId=" + eventId + "]";
}
// public void setEvent(Event event) { // public void setEvent(Event event) {
// this.event = event; // this.event = event;
// } // }
......
...@@ -164,7 +164,7 @@ public class User implements ModelInterface<Integer> { ...@@ -164,7 +164,7 @@ public class User implements ModelInterface<Integer> {
private int jpaVersionField = 0; private int jpaVersionField = 0;
@OneToMany(mappedBy = "admin") @OneToMany(mappedBy = "admin")
private List<EventSettings> eventSettings; private List<EventOrganiser> eventOrganiser;
@Transient @Transient
private static final Logger logger = LoggerFactory.getLogger(User.class); private static final Logger logger = LoggerFactory.getLogger(User.class);
...@@ -519,20 +519,7 @@ public class User implements ModelInterface<Integer> { ...@@ -519,20 +519,7 @@ public class User implements ModelInterface<Integer> {
this.confirmTime = confirmTime; this.confirmTime = confirmTime;
} }
/**
* @return the eventSettings
*/
public List<EventSettings> getEventSettings() {
return eventSettings;
}
/**
* @param eventSettings
* the eventSettings to set
*/
public void setEventSettings(List<EventSettings> eventSettings) {
this.eventSettings = eventSettings;
}
public void resetPassword(String password) { public void resetPassword(String password) {
String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password); String newEncryptedPassword = PasswordFunctions.getEncryptedPassword(password);
...@@ -543,4 +530,12 @@ public class User implements ModelInterface<Integer> { ...@@ -543,4 +530,12 @@ public class User implements ModelInterface<Integer> {
boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password); boolean matches = PasswordFunctions.checkPlainPassword(plainPassword, this.password);
return matches; return matches;
} }
public void setEventOrganiser(List<EventOrganiser> eventOrganiser) {
this.eventOrganiser = eventOrganiser;
}
public List<EventOrganiser> getEventOrganiser() {
return eventOrganiser;
}
} }
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>LanBortalWeb</display-name> <display-name>LanBortalWeb</display-name>
<context-param> <context-param>
<param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name> <param-name>javax.faces.FACELETS_SKIP_COMMENTS</param-name>
<param-value>true</param-value> <param-value>true</param-value>
</context-param> </context-param>
<servlet-mapping> <servlet-mapping>
<servlet-name>PlaceMap</servlet-name> <servlet-name>PlaceMap</servlet-name>
<url-pattern>/PlaceMap</url-pattern> <url-pattern>/PlaceMap</url-pattern>
</servlet-mapping> </servlet-mapping>
<welcome-file-list>
<welcome-file-list> <welcome-file>index.html</welcome-file>
<welcome-file>index.html</welcome-file> <welcome-file>index.jsf</welcome-file>
<welcome-file>index.jsf</welcome-file> <welcome-file>index.jsp</welcome-file>
<welcome-file>index.jsp</welcome-file> </welcome-file-list>
</welcome-file-list> <servlet>
<servlet> <servlet-name>Faces Servlet</servlet-name>
<servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class> </servlet>
</servlet> <servlet>
<servlet> <servlet-name>PlaceMap</servlet-name>
<servlet-name>PlaceMap</servlet-name> <servlet-class>fi.insomnia.bortal.servlet.PlaceMap</servlet-class>
<servlet-class>fi.insomnia.bortal.servlet.PlaceMap</servlet-class> </servlet>
</servlet> <servlet-mapping>
<servlet-mapping> <servlet-name>Faces Servlet</servlet-name>
<servlet-name>Faces Servlet</servlet-name> <url-pattern>*.jsf</url-pattern>
<url-pattern>*.jsf</url-pattern> </servlet-mapping>
</servlet-mapping> <filter>
<display-name>HostnameFilter</display-name>
<filter> <filter-name>HostnameFilter</filter-name>
<display-name>HostnameFilter</display-name> <filter-class>fi.insomnia.bortal.HostnameFilter</filter-class>
<filter-name>HostnameFilter</filter-name> </filter>
<filter-class>fi.insomnia.bortal.HostnameFilter</filter-class> <filter-mapping>
</filter> <filter-name>HostnameFilter</filter-name>
<filter-mapping> <servlet-name>Faces Servlet</servlet-name>
<filter-name>HostnameFilter</filter-name> </filter-mapping>
<servlet-name>Faces Servlet</servlet-name> <login-config>
</filter-mapping> <auth-method>FORM</auth-method>
<realm-name>omniarealm</realm-name>
<login-config> <form-login-config>
<auth-method>FORM</auth-method> <form-login-page>/auth/login.jsf</form-login-page>
<realm-name>omniarealm</realm-name> <form-error-page>/auth/loginError.jsf</form-error-page>
<form-login-config> </form-login-config>
<form-login-page>/auth/login.jsf</form-login-page> </login-config>
<form-error-page>/auth/loginError.jsf</form-error-page> <security-role>
</form-login-config> <role-name>admin</role-name>
</login-config> </security-role>
<security-role> <security-role>
<role-name>admin</role-name> <role-name>user</role-name>
</security-role> </security-role>
<security-role> <security-constraint>
<role-name>user</role-name> <web-resource-collection>
</security-role> <web-resource-name>forbidden</web-resource-name>
<url-pattern>*.xhtml</url-pattern>
</web-resource-collection>
<auth-constraint>
<security-constraint> <description>Thou shall not read the sources..</description>
<web-resource-collection> </auth-constraint>
<web-resource-name>forbidden</web-resource-name> </security-constraint>
<url-pattern>*.xhtml</url-pattern> <servlet>
</web-resource-collection> <description></description>
<auth-constraint> <display-name>BillPrint</display-name>
<description>Thou shall not read the sources..</description> <servlet-name>BillPrint</servlet-name>
</auth-constraint> <servlet-class>fi.insomnia.bortal.servlet.BillPrint</servlet-class>
</security-constraint> </servlet>
<servlet-mapping>
</web-app> <servlet-name>BillPrint</servlet-name>
<url-pattern>/BillPrint</url-pattern>
</servlet-mapping>
</web-app>
\ No newline at end of file
...@@ -7,6 +7,7 @@ import javax.faces.context.FacesContext; ...@@ -7,6 +7,7 @@ import javax.faces.context.FacesContext;
/*** /***
* Access i18n localisations from Java code. Feel free to make up a better way. * Access i18n localisations from Java code. Feel free to make up a better way.
* Note! works only when invoked from inside Faces context...
* *
* @author jkj * @author jkj
* *
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!