blob: b85de05578009834ba726b5ab861ba3396858afd [file] [log] [blame]
/**
*
* Copyright (c) 2011, 2016 - Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
*
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Christophe Loetz (Loetz GmbH&Co.KG) - initial implementation
*/
package org.eclipse.osbp.utils.fillertext.provider;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
public class TextConfigurator {
private Locale locale;
private String alphabet = "abcdefghijklmnopqrstuvwxyz";
private String loremipsum = "";
private String text = "";
private Set<String> words = null;
private Set<String> sentences = null;
private Set<String> paragraphs = null;
private static final Locale DEFAULT = Locale.ENGLISH;
private static final Map<Locale,String> ALPHABETS = new HashMap<Locale, String> ();
private static final Map<Locale,String> LOREM_IPSUMS = new HashMap<Locale, String> ();
static {
ALPHABETS.put(Locale.ENGLISH, "abcdefghijklmnopqrstuvwxyz");
ALPHABETS.put(Locale.GERMAN, "abcdefghijklmnopqrstuvwxyzäöüß");
ALPHABETS.put(Locale.FRENCH, "abcdefghijklmnopqrstuvwxyzáàâéè");
LOREM_IPSUMS.put(Locale.ENGLISH,
"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean suscipit ullamcorper ipsum, at varius leo sagittis ut. Morbi varius nisl non eleifend imperdiet. Integer porttitor arcu sit amet elit rhoncus, eget bibendum felis mattis. Aenean nec accumsan metus. Fusce venenatis ipsum nec accumsan varius. Suspendisse vitae nisi cursus, pretium nulla id, tincidunt urna. Aenean porttitor lacus nec sapien commodo laoreet. Praesent tristique sagittis felis ut porta. Nam non diam urna. Nullam nec lorem iaculis, elementum elit ut, malesuada urna. Donec ac erat interdum, porta mi a, porttitor risus.\r\n"+
"Phasellus vulputate molestie mattis. Donec lobortis nisl sit amet nunc venenatis fermentum. Nam accumsan dignissim cursus. Nullam ornare tristique dui tempor tincidunt. Aenean a dignissim erat. Fusce lacinia mauris sit amet ante convallis sodales. Sed eleifend posuere dui. Curabitur venenatis aliquam ex, vitae rhoncus quam scelerisque id. Quisque egestas diam urna, eget fringilla tortor tristique ac. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas.\r\n"+
"Maecenas volutpat ipsum vel pellentesque eleifend. Aenean felis lectus, consectetur vel lacinia nec, scelerisque a ex. Etiam placerat finibus odio, a mollis lorem congue in. Nullam laoreet nec odio eu venenatis. Sed convallis velit pulvinar, vestibulum neque sit amet, ultricies arcu. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut sit amet ex sit amet massa semper bibendum in id est.\r\n"+
"In nulla velit, laoreet vitae bibendum eget, pulvinar sit amet arcu. Nunc fermentum metus at dui condimentum, id sodales elit vehicula. Vivamus consequat finibus felis, sed accumsan urna faucibus sit amet. Suspendisse at sagittis diam. Donec fermentum risus sed dignissim auctor. Phasellus vel est diam. Donec venenatis neque eget ex tempus ornare. Duis tellus magna, pharetra sit amet dui eu, interdum mollis ante. Maecenas malesuada pulvinar metus, quis posuere dui egestas in. Fusce quis lacus facilisis, feugiat eros a, accumsan ante. In et quam pharetra, varius mauris nec, commodo urna.\r\n"+
"Nullam vel fermentum lectus. Sed vel mauris at sapien dictum sodales. Fusce a tristique tellus. Sed vel pulvinar odio. Nunc ut libero at nunc molestie consequat. Vivamus facilisis varius quam non vestibulum. Nullam volutpat interdum ipsum eu lacinia. Ut a ullamcorper neque. Morbi vulputate felis viverra lacinia blandit. In gravida, enim eu eleifend fermentum, lacus augue rutrum velit, vitae lacinia metus augue a neque.\r\n"+
"Nulla in nulla dolor. Donec ac velit mollis nunc scelerisque pharetra. Phasellus id nisl et arcu eleifend commodo eget nec elit. Vestibulum at diam quam. Quisque vestibulum in erat vitae lacinia. Phasellus et iaculis dui. Quisque justo risus, feugiat et facilisis ut, sagittis ut sem.\r\n"+
"Cras pretium nisl orci, vel blandit erat vestibulum in. Vestibulum vitae arcu consequat sem viverra consectetur eu a velit. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus et ullamcorper felis, id luctus dolor. Vestibulum eu nulla et mi fermentum ultricies et in neque. Nam sollicitudin leo neque, vel efficitur massa dictum vitae. Praesent eget posuere est.\r\n"+
"Integer eros leo, tincidunt a facilisis ut, imperdiet efficitur erat. Vivamus at nibh nulla. Etiam nisl orci, convallis quis metus sed, tincidunt aliquet nisl. Morbi posuere vehicula neque, lacinia pulvinar metus egestas nec. Nulla sodales mauris eget tellus sagittis porttitor. Aenean sed nunc id odio pharetra mattis quis ut purus. Sed sem velit, tempus vitae luctus eget, ullamcorper at odio. Etiam elit ipsum, iaculis non cursus at, elementum a augue. Ut sollicitudin fermentum lorem, in vestibulum ligula sodales sodales. Mauris sed sem pellentesque, bibendum lacus in, egestas justo. Etiam sit amet dui purus. Praesent et gravida purus. Aenean auctor tempus viverra. Quisque in sem id arcu consectetur eleifend. Cras at lorem in libero consectetur mollis id posuere justo. Sed finibus mauris nec metus fringilla luctus.\r\n"+
"Nulla sagittis tortor id cursus auctor. Vivamus sagittis convallis metus, sed semper elit ultrices eu. Praesent sodales ante vitae nibh suscipit, nec accumsan felis euismod. Nulla at orci venenatis, semper magna vitae, rhoncus libero. Nunc ut consequat quam. Aenean dictum nibh eu lorem accumsan commodo. Praesent egestas aliquam velit, nec varius arcu sodales quis. Sed lobortis tellus nunc, eget suscipit dolor consequat a. Quisque laoreet consequat nisl, at rhoncus sem cursus feugiat. Suspendisse id ipsum at tellus rutrum facilisis. Nullam nec massa nec urna tincidunt ornare. In magna est, sagittis fringilla tempus eget, tempus sed eros. Proin elementum porta gravida.\r\n"+
"Donec non lorem quis orci egestas semper a sed arcu. Donec vestibulum maximus mollis. Vestibulum vel lorem vel justo semper euismod. Nam pellentesque odio a odio varius molestie. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Mauris dapibus nibh et ornare pulvinar. Curabitur eget aliquet risus. Etiam sed pretium nulla. Duis sapien ipsum, lobortis non eros in, tristique hendrerit turpis.\r\n"+
"Cras pharetra ac diam id viverra. Vivamus sit amet ex eleifend, volutpat ligula et, ullamcorper elit. Ut dignissim mollis elit, non eleifend felis pharetra quis. Proin pretium, est eu pharetra semper, ipsum ex volutpat felis, ut iaculis elit tortor eget est. Curabitur ut ullamcorper orci, in finibus massa. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Sed sed lacinia massa, sed dapibus velit. Donec eget bibendum purus. Sed suscipit ultricies accumsan. Aenean pellentesque facilisis felis, in lacinia mauris faucibus ac. Nunc mauris diam, posuere sed ullamcorper vitae, pharetra vel nisi. Nunc vehicula urna massa, vitae ultrices ex luctus sed.\r\n"+
"Etiam pellentesque posuere leo, ac pellentesque justo. Pellentesque laoreet ipsum id nunc volutpat, ut consequat felis vestibulum. Nullam iaculis augue est, eu mattis ante condimentum non. Pellentesque quis tristique libero. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed a ipsum a odio pharetra egestas nec sit amet sem. Integer quis aliquam lectus.\r\n"+
"Quisque at justo auctor, venenatis lacus sit amet, finibus tellus. Vivamus rhoncus lacinia lorem quis malesuada. Phasellus scelerisque vehicula ex. Fusce finibus purus placerat, rhoncus erat blandit, tincidunt dolor. Nam a justo iaculis enim auctor imperdiet vel sed libero. Nulla sit amet orci sollicitudin, facilisis mauris sit amet, dignissim turpis. Donec ut enim quis justo dictum consequat.\r\n"+
"Sed eget augue consequat, pulvinar dui eget, suscipit arcu. Pellentesque et lacinia nisi, eu iaculis odio. Aenean fermentum quam a nibh hendrerit, accumsan hendrerit dui egestas. Ut sit amet nulla vitae risus pulvinar vestibulum non id lorem. Integer pretium condimentum interdum. Maecenas tincidunt vel ipsum vel accumsan. Sed finibus mi vel sem rhoncus consectetur. Donec malesuada, arcu id malesuada pulvinar, ex ante vehicula dolor, at pharetra massa leo ut felis. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Nunc efficitur ex ac tincidunt dignissim. Donec in nisi quis nulla scelerisque ullamcorper quis nec mi. Curabitur convallis eu enim vel mollis. Duis rhoncus, est id sagittis feugiat, tortor purus elementum nunc, in iaculis est erat fermentum orci. Proin cursus, lacus euismod finibus vulputate, ante dolor commodo dui, a dictum lacus justo vitae velit. Proin sit amet ex gravida, sodales justo non, ullamcorper ipsum. Nullam porta vehicula efficitur.\r\n"+
"Mauris euismod finibus accumsan. Nulla ornare sagittis dignissim. Vestibulum eget aliquam augue. Aliquam malesuada eu dolor nec placerat. Nullam gravida eu eros non maximus. Aliquam vulputate libero eu maximus elementum. Fusce ex purus, pretium quis eros ut, consequat maximus ipsum. Aenean id ullamcorper turpis. Etiam efficitur et quam elementum viverra. Aenean lacinia, nisi eu faucibus efficitur, magna ligula dictum nulla, vel porta orci nibh id nisi. Morbi sit amet tempor magna. Praesent vitae orci eu est eleifend finibus. Aliquam vel nisi vel justo fermentum rutrum sit amet in mauris. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.\r\n"+
"Proin ante urna, congue non orci a, vehicula tincidunt velit. In accumsan justo sed eros laoreet volutpat. Phasellus venenatis cursus nulla sed consectetur. Maecenas at dolor mauris. Nulla eget iaculis neque, in malesuada nisl. Etiam posuere enim vitae erat condimentum tristique. Nulla vitae tempus ante. Aenean iaculis nisl id accumsan dignissim. Proin iaculis quam eget augue commodo, in egestas ex semper. Praesent ut mauris tortor. Donec vestibulum ante id vulputate luctus. Ut eu accumsan metus. Integer in ligula nulla.\r\n"+
"Nulla facilisi. Proin molestie erat eget dui volutpat tristique. Nullam accumsan dui sodales nunc consectetur semper. Duis posuere lacus id elit interdum, eu pellentesque dui blandit. Vestibulum eget rutrum urna. In lacus eros, mollis nec scelerisque ac, eleifend nec sapien. Ut varius pretium felis, eu rutrum libero feugiat in. Sed feugiat tristique nisi nec imperdiet. Vivamus quis pulvinar mauris, a tempor arcu. Maecenas auctor, tellus eget imperdiet suscipit, lacus velit eleifend nisi, ac tempus ipsum elit id tellus. Duis justo felis, placerat a finibus in, sodales sit amet ipsum. Nunc vel mauris eget sem tristique accumsan. Suspendisse libero enim, tincidunt nec imperdiet ut, finibus eget magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Fusce eleifend id dolor at fermentum.\r\n"+
"Fusce lectus tortor, tincidunt id commodo et, mattis eu ipsum. Integer id magna nec dui rhoncus suscipit vel quis libero. Phasellus venenatis, libero ac congue facilisis, tellus ligula semper ligula, ac semper diam dolor sit amet diam. Curabitur ante nulla, placerat quis felis at, pretium condimentum ante. In ac felis quis orci consectetur condimentum. In eu odio venenatis, finibus urna et, tincidunt leo. Cras at urna id sapien pretium maximus. Proin quam nulla, porta vestibulum neque et, viverra mollis neque. Nam et viverra mauris. Proin sit amet placerat est, in blandit metus. Donec nec dui vel tortor commodo interdum sit amet at urna. Nunc ligula ex, molestie nec eleifend at, dapibus at ex. Interdum et malesuada fames ac ante ipsum primis in faucibus.\r\n"+
"Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nunc rutrum leo dolor, eu auctor enim sagittis ac. Ut facilisis cursus ornare. Donec nec leo blandit, pellentesque elit a, suscipit sapien. Maecenas et risus scelerisque, rutrum ligula vel, pellentesque elit. Cras nec lobortis metus, id vehicula enim. Aliquam viverra ligula ligula, ut luctus nunc suscipit vitae. Pellentesque vel dictum leo. Aenean leo quam, convallis a varius nec, laoreet eget augue.\r\n"+
"Phasellus viverra ante eu sem blandit, vel sagittis urna eleifend. Nunc facilisis tincidunt mauris vel gravida. Sed nec ipsum vel neque tempor bibendum sit amet sed mi. Lorem ipsum dolor sit amet, consectetur adipiscing elit. In erat eros, porta sit amet varius sed, mattis ac risus. Donec maximus felis sed dictum faucibus. Ut tristique lacus eget felis venenatis ultrices. Nam luctus tortor quis est molestie, ac blandit sem dictum. Ut fermentum, diam ac pharetra imperdiet, dui enim eleifend orci, quis posuere ligula turpis vitae lorem. In vitae semper orci. Proin faucibus ligula vel arcu imperdiet laoreet. In purus felis, consectetur vel accumsan nec, vestibulum in sapien. Curabitur commodo nisi eu arcu scelerisque, eu laoreet orci tristique. Nullam in tellus dolor. Curabitur tempor quam a arcu posuere tincidunt. Integer id metus et lacus vestibulum pulvinar."
);
/*
LOREM_IPSUMS.put(Locale.GERMAN,
"Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans.\r\n"+
"Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen.\r\n"+
"Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik.\r\n"+
"Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg.\r\n"+
"Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse.\r\n"+
"Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy.\r\n"+
"Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort und und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren.\r\n"+
"Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten.\r\n"+
"Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch. Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans.\r\n"+
"Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen.\r\n"+
"Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik.\r\n"+
"Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg.\r\n"+
"Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse.\r\n"+
"Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy.\r\n"+
"Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort und und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren.\r\n"+
"Doch alles Gutzureden konnte es nicht überzeugen und so dauerte es nicht lange, bis ihm ein paar heimtückische Werbetexter auflauerten, es mit Longe und Parole betrunken machten und es dann in ihre Agentur schleppten, wo sie es für ihre Projekte wieder und wieder mißbrauchten. Und wenn es nicht umgeschrieben wurde, dann benutzen Sie es immernoch.\r\n"+
"Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien.\r\n"+
"Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht – ein geradezu unorthographisches Leben. Eines Tages aber beschloß eine kleine Zeile Blindtext, ihr Name war Lorem Ipsum, hinaus zu gehen in die weite Grammatik.\r\n"+
"Der große Oxmox riet ihr davon ab, da es dort wimmele von bösen Kommata, wilden Fragezeichen und hinterhältigen Semikoli, doch das Blindtextchen ließ sich nicht beirren. Es packte seine sieben Versalien, schob sich sein Initial in den Gürtel und machte sich auf den Weg.\r\n"+
"Als es die ersten Hügel des Kursivgebirges erklommen hatte, warf es einen letzten Blick zurück auf die Skyline seiner Heimatstadt Buchstabhausen, die Headline von Alphabetdorf und die Subline seiner eigenen Straße, der Zeilengasse. Wehmütig lief ihm eine rhetorische Frage über die Wange, dann setzte es seinen Weg fort. Unterwegs traf es eine Copy. Die Copy warnte das Blindtextchen, da, wo sie herkäme wäre sie zigmal umgeschrieben worden und alles, was von ihrem Ursprung noch übrig wäre, sei das Wort und und das Blindtextchen solle umkehren und wieder in sein eigenes, sicheres Land zurückkehren. Doch alles Gutzureden."
);
*/
}
protected TextConfigurator(Locale locale) {
this.locale = locale;
Locale locale2 = new Locale(locale.getLanguage());
if (ALPHABETS.containsKey(locale)) {
alphabet = ALPHABETS.get(locale);
}
else if (ALPHABETS.containsKey(locale2)) {
alphabet = ALPHABETS.get(locale2);
}
else {
alphabet = ALPHABETS.get(DEFAULT);
}
if (LOREM_IPSUMS.containsKey(locale)) {
loremipsum = LOREM_IPSUMS.get(locale);
}
else if (LOREM_IPSUMS.containsKey(locale2)) {
loremipsum = LOREM_IPSUMS.get(locale2);
}
else {
loremipsum = LOREM_IPSUMS.get(DEFAULT);
}
}
protected String getAlphabet() {
return alphabet;
}
protected String getLoremIpsum() {
return loremipsum;
}
protected Set<String> getParagraphs() {
if (paragraphs == null) {
paragraphs = new HashSet<String>();
String[] items = loremipsum.split("\r\n");
for (String item : items) {
paragraphs.add(item);
}
}
return paragraphs;
}
protected Set<String> getSentences() {
if (sentences == null) {
sentences = new HashSet<String>();
String[] items = loremipsum.split("[\\.,\\s!;?:]+");
for (String item : items) {
sentences.add(item.trim());
}
}
return sentences;
}
protected Set<String> getWords() {
if (words == null) {
words = new HashSet<String>();
String[] items;
if (text.isEmpty()) {
items = loremipsum.split(" ");
}
else {
items = text.split(" ");
}
for (String item : items) {
words.add(item
.replace(".", "")
.replace(",", "")
.replace(";", "")
.replace("!", "")
.replace("?", "")
);
}
}
return words;
}
}