package net.korabo.app.vaadin01.srv;\r
\r
import com.orientechnologies.orient.core.db.OPartitionedDatabasePool;\r
+import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;\r
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;\r
import java.util.ArrayList;\r
import java.util.List;\r
*\r
* @author manager\r
*/\r
-public class ContactBeanQuery extends AbstractBeanQuery<Contact>{\r
+public class ContactBeanQuery extends AbstractBeanQuery<Contact> {\r
\r
- private final OPartitionedDatabasePool pool;\r
+ private final ContactService contactSvc;\r
\r
- public ContactBeanQuery(QueryDefinition definition,\r
- Map<String, Object> queryConfiguration, Object[] sortPropertyIds,\r
- boolean[] sortStates) {\r
- super(definition, queryConfiguration, sortPropertyIds, sortStates);\r
- this.pool = (OPartitionedDatabasePool)queryConfiguration.get("OPartitionedDatabasePool");\r
- }\r
+ public ContactBeanQuery(QueryDefinition definition,\r
+ Map<String, Object> queryConfiguration, Object[] sortPropertyIds,\r
+ boolean[] sortStates) {\r
+ super(definition, queryConfiguration, sortPropertyIds, sortStates);\r
+ this.contactSvc = (ContactService)queryConfiguration.get("ContactService");\r
+ }\r
\r
- \r
- @Override\r
- protected Contact constructBean() {\r
- return new Contact();\r
- }\r
+ @Override\r
+ protected Contact constructBean() {\r
+ return new Contact();\r
+ }\r
\r
- @Override\r
- public int size() {\r
- try (\r
- OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {\r
- db.getEntityManager().registerEntityClass(Contact.class);\r
- return (int) db.countClass(Contact.class);\r
- }\r
- }\r
+ @Override\r
+ public int size() {\r
+ return (int)contactSvc.count();\r
+ }\r
\r
- @Override\r
- protected List<Contact> loadBeans(int i, int i1) {\r
- ArrayList arrayList = new ArrayList();\r
- try (\r
- OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {\r
- db.getEntityManager().registerEntityClass(Contact.class);\r
- for (Contact contact : db.browseClass(Contact.class).) {\r
- boolean passesFilter = (stringFilter == null || stringFilter.isEmpty())\r
- || contact.toString().toLowerCase()\r
- .contains(stringFilter.toLowerCase());\r
- if (passesFilter) {\r
-// contact = db.detach(contact);\r
- arrayList.add(db.detach(contact, true));\r
- }\r
- }\r
+ @Override\r
+ protected List<Contact> loadBeans(int i, int i1) {\r
+ return contactSvc.loadBeans(i, i1);\r
+ }\r
\r
- }\r
- }\r
+ @Override\r
+ protected void saveBeans(List<Contact> list, List<Contact> list1, List<Contact> list2) {\r
+ throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.\r
+ }\r
\r
- @Override\r
- protected void saveBeans(List<Contact> list, List<Contact> list1, List<Contact> list2) {\r
- throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.\r
- }\r
- \r
}\r
import com.orientechnologies.orient.client.remote.OServerAdmin;
import com.orientechnologies.orient.core.db.OPartitionedDatabasePool;
+import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery;
import com.orientechnologies.orient.object.db.OObjectDatabaseTx;
import java.io.IOException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import net.korabo.app.vaadin01.ent.Contact;
+import net.korabo.lib.beans.ClassUtil;
/**
*
*/
public class ContactService {
- // Create dummy data by randomly combining first and last names
- static String[] fnames = {"Peter", "Alice", "John", "Mike", "Olivia",
- "Nina", "Alex", "Rita", "Dan", "Umberto", "Henrik", "Rene", "Lisa",
- "Linda", "Timothy", "Daniel", "Brian", "George", "Scott",
- "Jennifer"};
- static String[] lnames = {"Smith", "Johnson", "Williams", "Jones",
- "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor",
- "Anderson", "Thomas", "Jackson", "White", "Harris", "Martin",
- "Thompson", "Young", "King", "Robinson"};
-
- private static ContactService instance;
- private static OPartitionedDatabasePool pool;
-
- public static ContactService createDemoService() {
- try {
- return createService0();
- } catch (IOException ex) {
- Logger.getLogger(ContactService.class.getName()).log(Level.SEVERE, null, ex);
- }
- return null;
+ // Create dummy data by randomly combining first and last names
+ static String[] fnames = {"Peter", "Alice", "John", "Mike", "Olivia",
+ "Nina", "Alex", "Rita", "Dan", "Umberto", "Henrik", "Rene", "Lisa",
+ "Linda", "Timothy", "Daniel", "Brian", "George", "Scott",
+ "Jennifer"};
+ static String[] lnames = {"Smith", "Johnson", "Williams", "Jones",
+ "Brown", "Davis", "Miller", "Wilson", "Moore", "Taylor",
+ "Anderson", "Thomas", "Jackson", "White", "Harris", "Martin",
+ "Thompson", "Young", "King", "Robinson"};
+
+ private static ContactService instance;
+ private static OPartitionedDatabasePool pool;
+
+ public static ContactService createDemoService() {
+ try {
+ return createService0();
+ } catch (IOException ex) {
+ Logger.getLogger(ContactService.class.getName()).log(Level.SEVERE, null, ex);
}
+ return null;
+ }
- private static ContactService createService0() throws IOException {
- if (instance == null) {
+ private static ContactService createService0() throws IOException {
+ if (instance == null) {
- final ContactService contactService = new ContactService();
- // OrientDB
+ final ContactService contactService = new ContactService();
+ // OrientDB
// ODatabaseDocumentTx db =
// new ODatabaseDocumentTx("remote:127.0.0.1/DocumentTest")
// .open("root", "korabo");
// OPartitionedDatabasePool pool = new OPartitionedDatabasePool("remote:127.0.0.1/dbtest","root","korabo");
// pool.
// OObjectDatabaseTx db = new OObjectDatabaseTx("remote:127.0.0.1/dbtest");
- String remote = "remote:127.0.0.1/";
- String nameDB = "TestPartitioned2";
- String url = remote + nameDB;
-
- OServerAdmin serverAdmin = new OServerAdmin(url).connect("root", "korabo");
- if (!serverAdmin.listDatabases().containsKey(nameDB)) {
- serverAdmin.createDatabase(nameDB, "object", "plocal");
- System.out.println(" Database '" + nameDB + "' created!..");
- }
+ String remote = "remote:127.0.0.1/";
+ String nameDB = "TestPartitioned2";
+ String url = remote + nameDB;
+
+ OServerAdmin serverAdmin = new OServerAdmin(url).connect("root", "korabo");
+ if (!serverAdmin.listDatabases().containsKey(nameDB)) {
+ serverAdmin.createDatabase(nameDB, "object", "plocal");
+ System.out.println(" Database '" + nameDB + "' created!..");
+ }
// OPartitionedDatabasePool pool = new OPartitionedDatabasePool(url, "admin", "admin");
- pool = new OPartitionedDatabasePool(url, "admin", "admin");
-
- try (
- OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
- db.getEntityManager().registerEntityClass(Contact.class);
-
- if (db.countClass(Contact.class) == 0) {
- // init
- Random r = new Random(0);
- Calendar cal = Calendar.getInstance();
- for (int i = 0; i < 100; i++) {
- Contact contact = db.newInstance(Contact.class);
- contact.setFirstName(fnames[r.nextInt(fnames.length)]);
- contact.setLastName(lnames[r.nextInt(fnames.length)]);
- contact.setEmail(contact.getFirstName().toLowerCase() + "@"
- + contact.getLastName().toLowerCase() + ".com");
- contact.setPhone("+ 358 555 " + (100 + r.nextInt(900)));
- cal.set(1930 + r.nextInt(70),
- r.nextInt(11), r.nextInt(28));
- contact.setBirthDate(cal.getTime());
- db.attachAndSave(contact);
- }
- db.commit();
- }
- }
- instance = contactService;
+ pool = new OPartitionedDatabasePool(url, "admin", "admin");
+
+ try (
+ OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
+ db.setAutomaticSchemaGeneration(true);
+ db.getEntityManager().registerEntityClasses(Contact.class.getPackage().getName());
+
+ if (db.countClass(Contact.class) == 0) {
+ // init
+ Random r = new Random(0);
+ Calendar cal = Calendar.getInstance();
+ for (int i = 0; i < 100; i++) {
+ Contact contact = db.newInstance(Contact.class);
+ contact.setFirstName(fnames[r.nextInt(fnames.length)]);
+ contact.setLastName(lnames[r.nextInt(fnames.length)]);
+ contact.setEmail(contact.getFirstName().toLowerCase() + "@"
+ + contact.getLastName().toLowerCase() + ".com");
+ contact.setPhone("+ 358 555 " + (100 + r.nextInt(900)));
+ cal.set(1930 + r.nextInt(70),
+ r.nextInt(11), r.nextInt(28));
+ contact.setBirthDate(cal.getTime());
+ db.attachAndSave(contact);
+ }
+ db.commit();
}
-
- return instance;
+ }
+ instance = contactService;
}
+ return instance;
+ }
+
// private HashMap<Long, Contact> contacts = new HashMap<>();
// private long nextId = 0;
- public synchronized List<Contact> findAll(String stringFilter) {
-
- ArrayList arrayList = new ArrayList();
- try (
- OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
- db.getEntityManager().registerEntityClass(Contact.class);
- for (Contact contact : db.browseClass(Contact.class)) {
- boolean passesFilter = (stringFilter == null || stringFilter.isEmpty())
- || contact.toString().toLowerCase()
- .contains(stringFilter.toLowerCase());
- if (passesFilter) {
+ public synchronized List<Contact> findAll(String stringFilter) {
+
+ ArrayList arrayList = new ArrayList();
+ try (
+ OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
+ db.setAutomaticSchemaGeneration(true);
+ db.getEntityManager().registerEntityClasses(Contact.class.getPackage().getName());
+
+ for (Contact contact : db.browseClass(Contact.class)) {
+ boolean passesFilter = (stringFilter == null || stringFilter.isEmpty())
+ || contact.toString().toLowerCase()
+ .contains(stringFilter.toLowerCase());
+ if (passesFilter) {
// contact = db.detach(contact);
- arrayList.add(db.detach(contact, true));
- }
- }
-
+ arrayList.add(db.detach(contact, true));
}
+ }
+
+ }
// for (Contact contact : contacts.values()) {
// try {
// boolean passesFilter = (stringFilter == null || stringFilter.isEmpty())
// return (int) (o2.getId() - o1.getId());
// }
// });
- return arrayList;
- }
+ return arrayList;
+ }
- public synchronized long count() {
+ public synchronized long count() {
// return contacts.size();
- try (
- OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
- db.getEntityManager().registerEntityClass(Contact.class);
- return db.countClass(Contact.class);
- }
+ try (
+ OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
+ db.setAutomaticSchemaGeneration(true);
+ db.getEntityManager().registerEntityClasses(Contact.class.getPackage().getName());
+ return db.countClass(Contact.class);
}
+ }
- public synchronized void delete(Contact value) {
+ public synchronized void delete(Contact value) {
// contacts.remove(value.getId());
- }
+ }
- public synchronized void save(Contact entry) {
- try (
- OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
- db.getEntityManager().registerEntityClass(Contact.class);
- db.begin();
- db.attachAndSave(entry);
- db.commit();
- }
+ public synchronized void save(Contact entry) {
+ try (
+ OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
+ db.setAutomaticSchemaGeneration(true);
+ db.getEntityManager().registerEntityClasses(Contact.class.getPackage().getName());
+
+ db.begin();
+ db.attachAndSave(entry);
+ db.commit();
+ }
// if (entry.getId() == null) {
// entry.setId(nextId++);
// }
// throw new RuntimeException(ex);
// }
// contacts.put(entry.getId(), entry);
+ }
+
+
+ public List<Contact> loadBeans(int i, int i1) {
+ ArrayList<Contact> arrayList = new ArrayList<>();
+ try (
+ OObjectDatabaseTx db = new OObjectDatabaseTx(pool.acquire())) {
+ db.setAutomaticSchemaGeneration(true);
+ db.getEntityManager().registerEntityClasses(Contact.class.getPackage().getName());
+
+ //SELECT FROM <target> [WHERE ...] SKIP <records-to-skip> LIMIT <max-records>
+ final OSQLSynchQuery<Contact> query = new OSQLSynchQuery<>("select * from Contact SKIP ? LIMIT ?");
+ List<Contact> result = db.query(query, i, i1);
+ result.stream().forEach((contact) -> {
+ arrayList.add(db.detach(contact, true));
+ });
}
+ return arrayList;
+ }
}
--- /dev/null
+/*
+ * To change this license header, choose License Headers in Project Properties.
+ * To change this template file, choose Tools | Templates
+ * and open the template in the editor.
+ */
+package net.korabo.app.vaadin01.ui;
+
+import com.vaadin.annotations.Theme;
+import com.vaadin.annotations.Title;
+import com.vaadin.annotations.VaadinServletConfiguration;
+import com.vaadin.annotations.Widgetset;
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.server.VaadinServlet;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Grid;
+import com.vaadin.ui.HorizontalLayout;
+import com.vaadin.ui.TextField;
+import com.vaadin.ui.UI;
+import com.vaadin.ui.VerticalLayout;
+import java.util.HashMap;
+import java.util.Map;
+import javax.servlet.annotation.WebServlet;
+import net.korabo.app.vaadin01.ent.Contact;
+import net.korabo.app.vaadin01.srv.ContactBeanQuery;
+import net.korabo.app.vaadin01.srv.ContactService;
+import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory;
+import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer;
+import org.vaadin.addons.lazyquerycontainer.LazyQueryDefinition;
+import org.vaadin.addons.lazyquerycontainer.QueryDefinition;
+
+/**
+ *
+ * @author cintake
+ */
+@Title("Addressbook2")
+@Theme("valo")
+@Widgetset("net.korabo.app.vaadin01.MyAppWidgetset")
+public class AddressbookUI2 extends UI {
+
+ TextField filter = new TextField();
+ Grid contactList = new Grid();
+ Button newContact = new Button("New contact");
+
+ // ContactForm is an example of a custom component class
+ ContactForm contactForm = new ContactForm();
+
+ // ContactService is a in-memory mock DAO that mimics
+ // a real-world datasource. Typically implemented for
+ // example as EJB or Spring Data based service.
+ LazyQueryContainer container;
+ ContactService service = ContactService.createDemoService();
+
+ @Override
+ protected void init(VaadinRequest request) {
+ configureComponents();
+ buildLayout();
+ }
+
+ private void configureComponents() {
+
+ newContact.addClickListener(e -> contactForm.edit(new Contact()));
+
+ filter.setInputPrompt("Filter contacts...");
+ filter.addTextChangeListener(e -> refreshContacts(e.getText()));
+
+ BeanQueryFactory<ContactBeanQuery> queryFactory = new BeanQueryFactory<>(ContactBeanQuery.class);
+
+Map<String,Object> queryConfiguration=new HashMap<>();
+queryConfiguration.put("ContactService",ContactService.createDemoService());
+queryFactory.setQueryConfiguration(queryConfiguration);
+
+container = new LazyQueryContainer(new LazyQueryDefinition(false, 50, "ContactID"), queryFactory);
+contactList.setContainerDataSource(container);
+// contactList.setContainerDataSource(new BeanItemContainer<>(Contact.class));
+// contactList.setColumnOrder("firstName", "lastName", "email");
+// contactList.removeColumn("id");
+// contactList.removeColumn("birthDate");
+// contactList.removeColumn("phone");
+// contactList.setSelectionMode(Grid.SelectionMode.SINGLE);
+// contactList.addSelectionListener(e
+// -> contactForm.edit((Contact) contactList.getSelectedRow()));
+ refreshContacts();
+ }
+
+ private void buildLayout() {
+ HorizontalLayout actions = new HorizontalLayout(filter, newContact);
+ actions.setWidth("100%");
+ filter.setWidth("100%");
+ actions.setExpandRatio(filter, 1);
+
+ VerticalLayout left = new VerticalLayout(actions, contactList);
+ left.setSizeFull();
+ contactList.setSizeFull();
+ left.setExpandRatio(contactList, 1);
+
+ HorizontalLayout mainLayout = new HorizontalLayout(left, contactForm);
+ mainLayout.setSizeFull();
+ mainLayout.setExpandRatio(left, 1);
+
+ // Split and allow resizing
+ setContent(mainLayout);
+ }
+
+ void refreshContacts() {
+ refreshContacts(filter.getValue());
+ }
+
+ private void refreshContacts(String stringFilter) {
+ container.refresh();
+// contactList.setContainerDataSource(new BeanItemContainer<>(
+// Contact.class, service.findAll(stringFilter)));
+ contactForm.setVisible(false);
+ }
+
+ @WebServlet(urlPatterns = "/2/*")
+ @VaadinServletConfiguration(ui = AddressbookUI2.class, productionMode = false)
+ public static class MyUIServlet extends VaadinServlet {
+
+ }
+
+}