Monday, September 9, 2013

Example Struts 2 + Hibernate + Spring intergration

Hi friends!

Finally after a long time, we are back. Here we’ve yet another example, as the title says, it is an Integration example in which we are going to see how Struts, Spring and Hibernate are getting integrated together.
   
    You create project and  execute follow step by step:

1. I use database Oracle 11g
create table: 

-- Create table
create table TBL_PHARMACYADMIN
(
  USERNAME VARCHAR2(4000),
  PASSWORD VARCHAR2(4000),
  ID       NUMBER
)
and create sequence

CREATE SEQUENCE PHARMACYADMIN_seq
 START WITH     1000
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;

2. Create Project dynamic web application pharmacyprj


- web.xml:
<filter>
  <filter-name>struts2</filter-name>
  <!-- filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> -->
  <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>struts2</filter-name>
  <url-pattern>/*</url-pattern>
 </filter-mapping>
 <session-config>
  <session-timeout>30</session-timeout>
 </session-config>
 <listener> 
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
</listener>   
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext*.xml</param-value>
  <!-- WEB-INF/applicationContext.xml -->
 </context-param>
 <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
 </welcome-file-list>

- hibernate.cfg.xml:

<session-factory>
<property name="hbm2ddl.auto">update</property>
<property name="dialect">
           org.hibernate.dialect.OracleDialect
       </property>
       <property name="connection.driver_class">
         oracle.jdbc.driver.OracleDriver
       </property>
       <property name="connection.url">
         jdbc:oracle:thin:@127.0.0.1:1521:ST2
       </property>
       <property name="connection.username">st</property>
       <property name="connection.password">123456</property>      
 
       <property name="hibernate.show_sql">true</property>
<property name="current_session_context_class">thread</property>
<property name="hibernate.connection.autocommit">true</property>
       <mapping resource="pharmacyAdmin.hbm.xml"/>
</session-factory>

- applicationContext.xml:

   <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>

<bean id="testSpring" class="com.fiz.model.TestSpring">
<property name="message" value="Hello Trung"></property>
</bean>
- pharmacyAdmin.hbm.xml

     <class name="com.fiz.model.pharmacyAdmin" table="tbl_pharmacyadmin">
    <id name="id" column="id" type="long">
    <generator class="sequence-identity">
    <param name="sequence">PHARMACYADMIN_SEQ</param>
    </generator>
    </id>
    <property name="username" column="username" insert="true" update="true" type="java.lang.String"></property>
    <property name="password" column="password" insert="true" update="true" type="java.lang.String"></property>
    </class>

- struts.xml:

                <action name="testaction" class="com.fiz.model.TestSpring">
<result name="success">index.jsp</result>
</action>

- Create class java HibernateSessionFactory.java

package com.fiz.utils;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactory {
private static String CONFIG_FILE_LOCATION="hibernate.cfg.xml";
private static final ThreadLocal<Session> threadLocal=new ThreadLocal<Session>();
private static Configuration configuration=new Configuration();
private static org.hibernate.SessionFactory sessionFactory;
private static String configFile=CONFIG_FILE_LOCATION;
static{
try{
configuration.configure(configFile);
sessionFactory=configuration.buildSessionFactory();
}catch (Exception e) {
// TODO: handle exception
System.out.println("Error Creating SessionFactory");
e.printStackTrace();
}
}
private HibernateSessionFactory(){
}
public static Session getSession()throws HibernateException{
Session session=(Session)threadLocal.get();
if(session==null || !session.isOpen()){
if(sessionFactory==null){
rebuildSessionFactory();
}
session=(sessionFactory!=null)?sessionFactory.openSession():null;
threadLocal.set(session);
}
return session;
}
public static void rebuildSessionFactory(){
try{
configuration.configure(configFile);
sessionFactory=configuration.buildSessionFactory();
}catch (Exception e) {
// TODO: handle exception
}
}
public static void closeSession()throws HibernateException{
Session session=(Session)threadLocal.get();
threadLocal.set(null);
if(session!=null){
session.close();
}
}

public static Configuration getConfiguration() {
return configuration;
}

public static org.hibernate.SessionFactory getSessionFactory() {
return sessionFactory;
}

public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory=null;
}
}

- Create interface userDao:

public interface userDao {
public List getAllUsers()throws Exception;
public List getUsersByPage(int pageNo, int pageSize)throws Exception;
public pharmacyAdmin findByUsernameAndPassword(String username, String password);
public Page findByPageNo(int pageNo, int pageSize);
public int addUser(pharmacyAdmin pmcyAdmin);
public int removeUser(pharmacyAdmin pmcyAdmin);
}

- Create class UserDaoImpl.java inherited Interface userDao:

private Session session=HibernateSessionFactory.getSession();
@Override
public List getAllUsers() throws Exception {
// TODO Auto-generated method stub
String sql="from tbl_pharmacyadmin";
Query query=session.createQuery(sql);
return query.list();
}

@Override
public List getUsersByPage(int pageNo, int pageSize) throws Exception {
// TODO Auto-generated method stub
String sql="from tbl_pharmacyadmin";
return null;
}

- In part web, you create files follow below:
Page index.jsp
<body>
<div id="header">
<div id="navigation">
    <ul>
        <li><a href="index.jsp">Home</a></li>
           <li><a href="#">About Us</a></li>
           <li><a href="#">ADMINISTRATOR </a></li>
           <li><a href="#">DISTRIBUTER </a></li>
           <li><a href="#">CUST0MER</a></li>
           <li><a href="#">Contact Us</a></li>
       </ul>
   </div>
</div>
<table width="960px" border="0" cellpadding="0" cellspacing="10" align="center"></table>
<div id="content">

<table width="960" border="0" cellspacing="0" cellpadding="0">
 <tr align="justify">
   <td width="200" valign="top">
    <img src="images/hioxindia-pharmacy_19.jpg" alt="" border="0" />    </td>
   <td width="760" valign="top">
    <h1>Welcome to Pharmaceutical Company </h1>
       <p>This is free Pharmaceutical Company   for your online website, blog or web page which is under Health and Medicine category. Anyone wants good, professional,   for their pharmacy, drug store, medical store then this   would be the best one. This free pharmaceutical company   is designed by professional designers to make your task much easier to customize it.</p><br />
<p>There are many other   categories like Arts, Agriculture, Computers, Satellite, Cars, Finance, Nature, Music, Personal Website, Religious, Fashion, Furniture, Holiday, Travel, Night club are available in this site. Have a look at the collection of HTML  s, pick the right one, preview and download it easily.</p>
   </td>
 </tr>
</table>
</div>
<div id="footer">
<div id="footer_1">
    <ul>
        <li><a href="#"></a></li>
            <li><a href="#"></a></li>
            <li><a href="#"></a></li>
            <li><a href="#"></a></li>
            <li><a href="#"></a></li>
        </ul> <br />
   <span id="design">Designed by <a id="dum" href="http://www.dacsanthanhhoa.com" target="_blank">TrungLee</a></span>
   <script type="text/javascript">
   document.onload = ctck();
   </script>
  </div>
</div>
</body>

- Layout.css:

@CHARSET "UTF-8";
/* CSS Document */

body{
margin:0;
color:#232323;
padding-top: 0px;
padding-right: 0;
padding-bottom: 0;
padding-left: 0;
background:#f0f3f0;
width:100%;
}
div, h1, h2, h3, h4, p, form, label, input, textarea, img, span{
margin:0; padding:0;
}

ul{
margin:0; 
padding:0; 
list-style-type:none;
font-size:0;
line-height:0;
}


.spacer{
clear:both; 
font-size:0; 
line-height:0;
}
h1
{
font:bold 14px/40px Arial, Helvetica, sans-serif;
}
p
{
font:normal 11px/18px Arial, Helvetica, sans-serif;
padding:0 15px 0 0;
}
.more
{
font:normal 12px/18px Arial, Helvetica, sans-serif;
color:#2e3192;
text-decoration:underline;
}
/* header */
#header
{
margin:0 auto;
background:url(images/hioxindia-pharmacy_02.jpg) 0 0 repeat-x;
}
#navigation
{
margin:0 auto;
background:url(images/hioxindia-pharmacy_04.jpg) 0 0 no-repeat;
height:446px;
width:960px;
}
#navigation ul
{
list-style:none;
}
#navigation ul li
{
font:normal 14px/40px Arial, Helvetica, sans-serif;
display:block;
padding:0 30px;
margin-top:410px;
float:left;
text-align:center;
}
#navigation ul li a
{
text-decoration:none;
display:block;
color:#034ea2;
}
#navigation ul li a:hover
{
text-decoration:none;
display:block;
color:#FFFFFF;
}
#content
{
margin:0 auto;
width:960px;
}

HAVE A NICE DAY!


Monday, August 19, 2013

About namespace in Struts

Example

http://<server>:<port>/<webapp>/<namespace>/<action>.action
you want access action when add more namespace in file Struts
<package name="default" namespace="/login" extends="struts-default">
            <action name="index" class="com.webapp.action.CoreAction">
                  <result name="success">/index.jsp</result>
            </action>
      </package>




Have a good time!

Fix errors when build Service version liferay SDK 6.1

Error:
Service Builder is a tool to automate the creation of classes and interfaces for service layer  and database persistence. Service Builder will create most of the common code
required to implement add, update, remove, find operations on the database
You can get more detail about Liferay service builder for 6.1 version

I was getting an issue from developer studio. So I tried to build Liferay services using ant in console.

C:\Liferay\dev-sdk\portlets\my-portlet>ant build-service
Buildfile: C:\Liferay\dev-sdk\portlets\my-portlet\build.xml

build-service:
     [java] Java Result: 1
     [echo] Error occurred during initialization of VM
     [echo] Could not reserve enough space for object heap
     [echo] Could not create the Java virtual machine.

BUILD FAILED
C:\Liferay\dev-sdk\\build-common-plugin.xml:207: Service Builder generated exceptions.

I changed in Ant runtime arguments in eclipse Run->Run configuration", "VM arguments". But still I was getting same above issue.

solution as follows:

Solution : I found , in my dev-sdk, change the build-common-plugin.xml with following values.
I replaced
                <jvmarg value="-Xms512m" />
                <jvmarg value="-Xmx1024m" />
to
            <jvmarg value="-Xms128m" />
            <jvmarg value="-Xmx512m" />

C:\Liferay\dev-sdk\portlets\my-portlet>ant build-service
Buildfile: C:\Liferay\dev-sdk\portlets\my-portlet\build.xml

build-service:
…..
BUILD SUCCESSFUL
Total time: 32 seconds


I was able to solve the problem. Hope this will help.

Have a good time!

Liferay connect Database Oracle

When you run many version Liferay, it has a database available exist generate script. This is small database called HSQL database.If you want to deploy on different database, you need build new database corresponding to it such as Oracle, SQL Server, Mysql
Here is the connect with database Oracle:

create table Account_ (
accountId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
parentAccountId number(30,0),
name varchar2(300) null,
legalName varchar2(300) null,
legalId varchar2(300) null,
legalType varchar2(300) null,
sicCode varchar2(300) null,
tickerSymbol varchar2(300) null,
industry varchar2(300) null,
type_ varchar2(300) null,
size_ varchar2(300) null
);

create table Address (
addressId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
classNameId number(30,0),
classPK number(30,0),
street1 varchar2(300) null,
street2 varchar2(300) null,
street3 varchar2(300) null,
city varchar2(300) null,
zip varchar2(300) null,
regionId number(30,0),
countryId number(30,0),
typeId number(30,0),
mailing number(1, 0),
primary_ number(1, 0)
);

create table AnnouncementsDelivery (
deliveryId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
type_ varchar2(300) null,
email number(1, 0),
sms number(1, 0),
website number(1, 0)
);

create table AnnouncementsEntry (
uuid_ varchar2(300) null,
entryId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
classNameId number(30,0),
classPK number(30,0),
title varchar2(300) null,
content varchar2(4000) null,
url varchar2(4000) null,
type_ varchar2(300) null,
displayDate timestamp null,
expirationDate timestamp null,
priority number(30,0),
alert number(1, 0)
);

create table AnnouncementsFlag (
flagId number(30,0) not null primary key,
userId number(30,0),
createDate timestamp null,
entryId number(30,0),
value number(30,0)
);

create table AssetCategory (
uuid_ varchar2(300) null,
categoryId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
parentCategoryId number(30,0),
leftCategoryId number(30,0),
rightCategoryId number(30,0),
name varchar2(300) null,
title varchar2(4000) null,
vocabularyId number(30,0)
);

create table AssetCategoryProperty (
categoryPropertyId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
categoryId number(30,0),
key_ varchar2(300) null,
value varchar2(300) null
);

create table AssetEntries_AssetCategories (
entryId number(30,0) not null,
categoryId number(30,0) not null,
primary key (entryId, categoryId)
);

create table AssetEntries_AssetTags (
entryId number(30,0) not null,
tagId number(30,0) not null,
primary key (entryId, tagId)
);

create table AssetEntry (
entryId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
classNameId number(30,0),
classPK number(30,0),
classUuid varchar2(300) null,
visible number(1, 0),
startDate timestamp null,
endDate timestamp null,
publishDate timestamp null,
expirationDate timestamp null,
mimeType varchar2(300) null,
title varchar2(1020) null,
description varchar2(4000) null,
summary varchar2(4000) null,
url varchar2(4000) null,
height number(30,0),
width number(30,0),
priority number(30,20),
viewCount number(30,0)
);

create table AssetLink (
linkId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
entryId1 number(30,0),
entryId2 number(30,0),
type_ number(30,0),
weight number(30,0)
);

create table AssetTag (
tagId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
name varchar2(300) null,
assetCount number(30,0)
);

create table AssetTagProperty (
tagPropertyId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
tagId number(30,0),
key_ varchar2(300) null,
value varchar2(1020) null
);

create table AssetTagStats (
tagStatsId number(30,0) not null primary key,
tagId number(30,0),
classNameId number(30,0),
assetCount number(30,0)
);

create table AssetVocabulary (
uuid_ varchar2(300) null,
vocabularyId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
name varchar2(300) null,
title varchar2(4000) null,
description varchar2(4000) null,
settings_ varchar2(4000) null
);

create table BlogsEntry (
uuid_ varchar2(300) null,
entryId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
title varchar2(600) null,
urlTitle varchar2(600) null,
content clob null,
displayDate timestamp null,
allowPingbacks number(1, 0),
allowTrackbacks number(1, 0),
trackbacks clob null,
status number(30,0),
statusByUserId number(30,0),
statusByUserName varchar2(300) null,
statusDate timestamp null
);

create table BlogsStatsUser (
statsUserId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
entryCount number(30,0),
lastPostDate timestamp null,
ratingsTotalEntries number(30,0),
ratingsTotalScore number(30,20),
ratingsAverageScore number(30,20)
);

create table BookmarksEntry (
uuid_ varchar2(300) null,
entryId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
createDate timestamp null,
modifiedDate timestamp null,
folderId number(30,0),
name varchar2(1020) null,
url varchar2(4000) null,
comments varchar2(4000) null,
visits number(30,0),
priority number(30,0)
);

create table BookmarksFolder (
uuid_ varchar2(300) null,
folderId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
createDate timestamp null,
modifiedDate timestamp null,
parentFolderId number(30,0),
name varchar2(300) null,
description varchar2(4000) null
);

create table BrowserTracker (
browserTrackerId number(30,0) not null primary key,
userId number(30,0),
browserKey number(30,0)
);

create table CalEvent (
uuid_ varchar2(300) null,
eventId number(30,0) not null primary key,
groupId number(30,0),
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
title varchar2(300) null,
description varchar2(4000) null,
startDate timestamp null,
endDate timestamp null,
durationHour number(30,0),
durationMinute number(30,0),
allDay number(1, 0),
timeZoneSensitive number(1, 0),
type_ varchar2(300) null,
repeating number(1, 0),
recurrence clob null,
remindBy number(30,0),
firstReminder number(30,0),
secondReminder number(30,0)
);

create table ClassName_ (
classNameId number(30,0) not null primary key,
value varchar2(800) null
);

create table ClusterGroup (
clusterGroupId number(30,0) not null primary key,
name varchar2(300) null,
clusterNodeIds varchar2(300) null,
wholeCluster number(1, 0)
);

create table Company (
companyId number(30,0) not null primary key,
accountId number(30,0),
webId varchar2(300) null,
key_ clob null,
virtualHost varchar2(300) null,
mx varchar2(300) null,
homeURL varchar2(4000) null,
logoId number(30,0),
system number(1, 0),
maxUsers number(30,0)
);

create table Contact_ (
contactId number(30,0) not null primary key,
companyId number(30,0),
userId number(30,0),
userName varchar2(300) null,
createDate timestamp null,
modifiedDate timestamp null,
accountId number(30,0),
parentContactId number(30,0),
firstName varchar2(300) null,
middleName varchar2(300) null,
lastName varchar2(300) null,
prefixId number(30,0),
suffixId number(30,0),
male number(1, 0),
birthday timestamp null,
smsSn varchar2(300) null,
aimSn varchar2(300) null,
facebookSn varchar2(300) null,
icqSn varchar2(300) null,
jabberSn varchar2(300) null,
msnSn varchar2(300) null,
mySpaceSn varchar2(300) null,
skypeSn varchar2(300) null,
twitterSn varchar2(300) null,
ymSn varchar2(300) null,
employeeStatusId varchar2(300) null,
employeeNumber varchar2(300) null,
jobTitle varchar2(400) null,
jobClass varchar2(300) null,
hoursOfOperation varchar2(300) null
);

create table Counter (
name varchar2(300) not null primary key,
currentId number(30,0)
);




.....
Have a good time!!!