Added Added initial files for entities,repositories for allocation manager module
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/RequestStatusEntity.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/RequestStatusEntity.java
new file mode 100644
index 0000000..4263468
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/RequestStatusEntity.java
@@ -0,0 +1,87 @@
+package org.apache.airavata.allocation.manager.db.entities;

+

+import java.io.Serializable;

+import javax.persistence.*;

+import java.math.BigInteger;

+

+

+/**

+ * The persistent class for the request_status database table.

+ * 

+ */

+@Entity

+@Table(name="request_status")

+@NamedQuery(name="RequestStatus.findAll", query="SELECT r FROM RequestStatus r")

+public class RequestStatus implements Serializable {

+	private static final long serialVersionUID = 1L;

+

+	@Id

+	@Column(name="PROJECT_ID")

+	private String projectId;

+

+	@Column(name="AWARD_ALLOCATION")

+	private BigInteger awardAllocation;

+

+	@Column(name="END_DATE")

+	private BigInteger endDate;

+

+	@Lob

+	private String reviewers;

+

+	@Column(name="START_DATE")

+	private BigInteger startDate;

+

+	private String status;

+

+	public RequestStatus() {

+	}

+

+	public String getProjectId() {

+		return this.projectId;

+	}

+

+	public void setProjectId(String projectId) {

+		this.projectId = projectId;

+	}

+

+	public BigInteger getAwardAllocation() {

+		return this.awardAllocation;

+	}

+

+	public void setAwardAllocation(BigInteger awardAllocation) {

+		this.awardAllocation = awardAllocation;

+	}

+

+	public BigInteger getEndDate() {

+		return this.endDate;

+	}

+

+	public void setEndDate(BigInteger endDate) {

+		this.endDate = endDate;

+	}

+

+	public String getReviewers() {

+		return this.reviewers;

+	}

+

+	public void setReviewers(String reviewers) {

+		this.reviewers = reviewers;

+	}

+

+	public BigInteger getStartDate() {

+		return this.startDate;

+	}

+

+	public void setStartDate(BigInteger startDate) {

+		this.startDate = startDate;

+	}

+

+	public String getStatus() {

+		return this.status;

+	}

+

+	public void setStatus(String status) {

+		this.status = status;

+	}

+

+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java
new file mode 100644
index 0000000..7d40899
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailEntity.java
@@ -0,0 +1,202 @@
+package org.apache.airavata.allocation.manager.db.entities;

+

+import java.io.Serializable;

+import javax.persistence.*;

+import java.math.BigInteger;

+

+

+/**

+ * The persistent class for the user_allocation_details database table.

+ * 

+ */

+@Entity

+@Table(name="user_allocation_details")

+@NamedQuery(name="UserAllocationDetail.findAll", query="SELECT u FROM UserAllocationDetail u")

+public class UserAllocationDetail implements Serializable {

+	private static final long serialVersionUID = 1L;

+

+	@EmbeddedId

+	private UserAllocationDetailPK id;

+

+	@Lob

+	@Column(name="APPLICATIONS_TO_BE_USED")

+	private String applicationsToBeUsed;

+

+	@Column(name="DISK_USAGE_RANGE_PER_JOB")

+	private BigInteger diskUsageRangePerJob;

+

+	@Lob

+	private byte[] documents;

+

+	@Lob

+	@Column(name="FIELD_OF_SCIENCE")

+	private String fieldOfScience;

+

+	@Lob

+	private String keywords;

+

+	@Column(name="MAX_MEMORY_PER_CPU")

+	private BigInteger maxMemoryPerCpu;

+

+	@Column(name="NUMBER_OF_CPU_PER_JOB")

+	private BigInteger numberOfCpuPerJob;

+

+	@Lob

+	@Column(name="PROJECT_DESCRIPTION")

+	private String projectDescription;

+

+	@Lob

+	@Column(name="PROJECT_REVIEWED_AND_FUNDED_BY")

+	private String projectReviewedAndFundedBy;

+

+	@Column(name="REQUESTED_DATE")

+	private BigInteger requestedDate;

+

+	@Column(name="SERVICE_UNITS")

+	private BigInteger serviceUnits;

+

+	@Lob

+	@Column(name="SPECIFIC_RESOURCE_SELECTION")

+	private String specificResourceSelection;

+

+	@Lob

+	private String title;

+

+	@Column(name="TYPE_OF_ALLOCATION")

+	private String typeOfAllocation;

+

+	@Column(name="TYPICAL_SU_PER_JOB")

+	private BigInteger typicalSuPerJob;

+

+	public UserAllocationDetail() {

+	}

+

+	public UserAllocationDetailPK getId() {

+		return this.id;

+	}

+

+	public void setId(UserAllocationDetailPK id) {

+		this.id = id;

+	}

+

+	public String getApplicationsToBeUsed() {

+		return this.applicationsToBeUsed;

+	}

+

+	public void setApplicationsToBeUsed(String applicationsToBeUsed) {

+		this.applicationsToBeUsed = applicationsToBeUsed;

+	}

+

+	public BigInteger getDiskUsageRangePerJob() {

+		return this.diskUsageRangePerJob;

+	}

+

+	public void setDiskUsageRangePerJob(BigInteger diskUsageRangePerJob) {

+		this.diskUsageRangePerJob = diskUsageRangePerJob;

+	}

+

+	public byte[] getDocuments() {

+		return this.documents;

+	}

+

+	public void setDocuments(byte[] documents) {

+		this.documents = documents;

+	}

+

+	public String getFieldOfScience() {

+		return this.fieldOfScience;

+	}

+

+	public void setFieldOfScience(String fieldOfScience) {

+		this.fieldOfScience = fieldOfScience;

+	}

+

+	public String getKeywords() {

+		return this.keywords;

+	}

+

+	public void setKeywords(String keywords) {

+		this.keywords = keywords;

+	}

+

+	public BigInteger getMaxMemoryPerCpu() {

+		return this.maxMemoryPerCpu;

+	}

+

+	public void setMaxMemoryPerCpu(BigInteger maxMemoryPerCpu) {

+		this.maxMemoryPerCpu = maxMemoryPerCpu;

+	}

+

+	public BigInteger getNumberOfCpuPerJob() {

+		return this.numberOfCpuPerJob;

+	}

+

+	public void setNumberOfCpuPerJob(BigInteger numberOfCpuPerJob) {

+		this.numberOfCpuPerJob = numberOfCpuPerJob;

+	}

+

+	public String getProjectDescription() {

+		return this.projectDescription;

+	}

+

+	public void setProjectDescription(String projectDescription) {

+		this.projectDescription = projectDescription;

+	}

+

+	public String getProjectReviewedAndFundedBy() {

+		return this.projectReviewedAndFundedBy;

+	}

+

+	public void setProjectReviewedAndFundedBy(String projectReviewedAndFundedBy) {

+		this.projectReviewedAndFundedBy = projectReviewedAndFundedBy;

+	}

+

+	public BigInteger getRequestedDate() {

+		return this.requestedDate;

+	}

+

+	public void setRequestedDate(BigInteger requestedDate) {

+		this.requestedDate = requestedDate;

+	}

+

+	public BigInteger getServiceUnits() {

+		return this.serviceUnits;

+	}

+

+	public void setServiceUnits(BigInteger serviceUnits) {

+		this.serviceUnits = serviceUnits;

+	}

+

+	public String getSpecificResourceSelection() {

+		return this.specificResourceSelection;

+	}

+

+	public void setSpecificResourceSelection(String specificResourceSelection) {

+		this.specificResourceSelection = specificResourceSelection;

+	}

+

+	public String getTitle() {

+		return this.title;

+	}

+

+	public void setTitle(String title) {

+		this.title = title;

+	}

+

+	public String getTypeOfAllocation() {

+		return this.typeOfAllocation;

+	}

+

+	public void setTypeOfAllocation(String typeOfAllocation) {

+		this.typeOfAllocation = typeOfAllocation;

+	}

+

+	public BigInteger getTypicalSuPerJob() {

+		return this.typicalSuPerJob;

+	}

+

+	public void setTypicalSuPerJob(BigInteger typicalSuPerJob) {

+		this.typicalSuPerJob = typicalSuPerJob;

+	}

+

+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailPKEntity.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailPKEntity.java
new file mode 100644
index 0000000..93f8502
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserAllocationDetailPKEntity.java
@@ -0,0 +1,56 @@
+package org.apache.airavata.allocation.manager.db.entities;

+

+import java.io.Serializable;

+import javax.persistence.*;

+

+/**

+ * The primary key class for the user_allocation_details database table.

+ * 

+ */

+@Embeddable

+public class UserAllocationDetailPK implements Serializable {

+	//default serial version id, required for serializable classes.

+	private static final long serialVersionUID = 1L;

+

+	@Column(name="PROJECT_ID")

+	private String projectId;

+

+	private String username;

+

+	public UserAllocationDetailPK() {

+	}

+	public String getProjectId() {

+		return this.projectId;

+	}

+	public void setProjectId(String projectId) {

+		this.projectId = projectId;

+	}

+	public String getUsername() {

+		return this.username;

+	}

+	public void setUsername(String username) {

+		this.username = username;

+	}

+

+	public boolean equals(Object other) {

+		if (this == other) {

+			return true;

+		}

+		if (!(other instanceof UserAllocationDetailPK)) {

+			return false;

+		}

+		UserAllocationDetailPK castOther = (UserAllocationDetailPK)other;

+		return 

+			this.projectId.equals(castOther.projectId)

+			&& this.username.equals(castOther.username);

+	}

+

+	public int hashCode() {

+		final int prime = 31;

+		int hash = 17;

+		hash = hash * prime + this.projectId.hashCode();

+		hash = hash * prime + this.username.hashCode();

+		

+		return hash;

+	}

+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java
new file mode 100644
index 0000000..b27a6bc
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/entities/UserDetailEntity.java
@@ -0,0 +1,75 @@
+package org.apache.airavata.allocation.manager.db.entities;

+

+import java.io.Serializable;

+import javax.persistence.*;

+

+

+/**

+ * The persistent class for the user_details database table.

+ * 

+ */

+@Entity

+@Table(name="user_details")

+@NamedQuery(name="UserDetail.findAll", query="SELECT u FROM UserDetail u")

+public class UserDetail implements Serializable {

+	private static final long serialVersionUID = 1L;

+

+	@Id

+	private String username;

+

+	@Lob

+	private String email;

+

+	@Lob

+	@Column(name="FULL_NAME")

+	private String fullName;

+

+	private String password;

+

+	@Column(name="USER_TYPE")

+	private String userType;

+

+	public UserDetail() {

+	}

+

+	public String getUsername() {

+		return this.username;

+	}

+

+	public void setUsername(String username) {

+		this.username = username;

+	}

+

+	public String getEmail() {

+		return this.email;

+	}

+

+	public void setEmail(String email) {

+		this.email = email;

+	}

+

+	public String getFullName() {

+		return this.fullName;

+	}

+

+	public void setFullName(String fullName) {

+		this.fullName = fullName;

+	}

+

+	public String getPassword() {

+		return this.password;

+	}

+

+	public void setPassword(String password) {

+		this.password = password;

+	}

+

+	public String getUserType() {

+		return this.userType;

+	}

+

+	public void setUserType(String userType) {

+		this.userType = userType;

+	}

+

+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/AbstractRepository.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/AbstractRepository.java
new file mode 100644
index 0000000..0ca393e
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/AbstractRepository.java
@@ -0,0 +1,170 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.airavata.sharing.registry.db.repositories;
+
+import org.apache.airavata.sharing.registry.db.utils.Committer;
+import org.apache.airavata.sharing.registry.db.utils.DBConstants;
+import org.apache.airavata.sharing.registry.db.utils.JPAUtils;
+import org.apache.airavata.sharing.registry.db.utils.ObjectMapperSingleton;
+import org.apache.airavata.sharing.registry.models.SharingRegistryException;
+import org.dozer.Mapper;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+public abstract class AbstractRepository<T, E, Id> {
+    private final static Logger logger = LoggerFactory.getLogger(AbstractRepository.class);
+
+    private Class<T> thriftGenericClass;
+    private Class<E> dbEntityGenericClass;
+
+    public AbstractRepository(Class<T> thriftGenericClass, Class<E> dbEntityGenericClass){
+        this.thriftGenericClass = thriftGenericClass;
+        this.dbEntityGenericClass = dbEntityGenericClass;
+    }
+
+    public T create(T t) throws SharingRegistryException {
+        return update(t);
+    }
+
+    //FIXME do a bulk insert
+    public List<T> create(List<T> tList) throws SharingRegistryException {
+        return update(tList);
+    }
+    
+    public List<T> create(String query) throws SharingRegistryException {
+       // String query = "INSERT INTO " + dbEntityGenericClass.getSimpleName() + " values("+values+")";
+       execute(entityManager -> {
+            javax.persistence.Query q = entityManager.createQuery(query);
+        });
+    }
+
+    public  T update(T t) throws SharingRegistryException {
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        E entity = mapper.map(t, dbEntityGenericClass);
+        E persistedCopy = execute(entityManager -> entityManager.merge(entity));
+        return mapper.map(persistedCopy, thriftGenericClass);
+    }
+
+    //FIXME do a bulk update
+    public  List<T> update(List<T> tList) throws SharingRegistryException {
+        List<T> returnList = new ArrayList<>();
+        for(T temp : tList)
+            returnList.add(update(temp));
+        return returnList;
+    }
+
+    public boolean delete(Id id) throws SharingRegistryException {
+        execute(entityManager -> {
+             E entity = entityManager.find(dbEntityGenericClass, id);
+             entityManager.remove(entity);
+             return entity;
+         });
+        return true;
+    }
+
+    public boolean delete(List<Id> idList) throws SharingRegistryException {
+        for(Id id : idList)
+            delete(id);
+        return true;
+    }
+
+    public T get(Id id) throws SharingRegistryException {
+        E entity = execute(entityManager -> entityManager
+                .find(dbEntityGenericClass, id));
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        if(entity == null)
+            return null;
+        return mapper.map(entity, thriftGenericClass);
+    }
+
+    public boolean isExists(Id id) throws SharingRegistryException {
+        return get(id) != null;
+    }
+
+    public List<T> get(List<Id> idList) throws SharingRegistryException {
+        List<T> returnList = new ArrayList<>();
+        for(Id id : idList)
+            returnList.add(get(id));
+        return returnList;
+    }
+
+    public List<T> select(Map<String, String> filters, int offset, int limit) throws SharingRegistryException {
+        String query = "SELECT DISTINCT p from " + dbEntityGenericClass.getSimpleName() + " as p";
+        ArrayList<String> parameters = new ArrayList<>();
+        int parameterCount = 1;
+        if (filters != null && filters.size() != 0) {
+            query += " WHERE ";
+            for (String k : filters.keySet()) {
+                query += "p." + k + " = ?" + parameterCount + " AND ";
+                parameters.add(filters.get(k));
+                parameterCount++;
+            }
+            query = query.substring(0, query.length() - 5);
+        }
+
+        query += " ORDER BY p.createdTime DESC";
+        String queryString = query;
+        int newLimit = limit < 0 ? DBConstants.SELECT_MAX_ROWS: limit;
+        List resultSet = execute(entityManager -> {
+            javax.persistence.Query q = entityManager.createQuery(queryString);
+            for (int i = 0; i < parameters.size(); i++) {
+                q.setParameter(i + 1, parameters.get(i));
+            }
+            return q.setFirstResult(offset).setMaxResults(newLimit).getResultList();
+        });
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        List<T> gatewayList = new ArrayList<>();
+        resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass)));
+        return gatewayList;
+    }
+
+    public List<T> select(String queryString, Map<String,Object> queryParameters, int offset, int limit) throws SharingRegistryException {
+        int newLimit = limit < 0 ? DBConstants.SELECT_MAX_ROWS: limit;
+        List resultSet = execute(entityManager -> {
+            Query q =  entityManager.createQuery(queryString);
+            for(Map.Entry<String, Object> queryParam : queryParameters.entrySet()){
+                q.setParameter(queryParam.getKey(), queryParam.getValue());
+            }
+            return q.setFirstResult(offset).setMaxResults(newLimit).getResultList();
+        });
+        Mapper mapper = ObjectMapperSingleton.getInstance();
+        List<T> gatewayList = new ArrayList<>();
+        resultSet.stream().forEach(rs -> gatewayList.add(mapper.map(rs, thriftGenericClass)));
+        return gatewayList;
+    }
+
+    public <R> R execute(Committer<EntityManager, R> committer) throws SharingRegistryException {
+        EntityManager entityManager = JPAUtils.getEntityManager();
+        try {
+            entityManager.getTransaction().begin();
+            R r = committer.commit(entityManager);
+            entityManager.getTransaction().commit();
+            return r;
+        } finally {
+            entityManager.close();
+        }
+    }
+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/RequestStatusRepository.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/RequestStatusRepository.java
new file mode 100644
index 0000000..52a2c4e
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/RequestStatusRepository.java
@@ -0,0 +1,14 @@
+package org.apache.airavata.allocation.manager.db.repositories;
+
+import org.apache.airavata.allocation.manager.db.entities.RequestStatusEntity;
+import org.apache.airavata.sharing.registry.models.RequestStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RequestStatusRepository extends AbstractRepository<RequestStatus, RequestStatusEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public RequestStatusRepository(){
+        super(RequestStatus.class, RequestStatusEntity.class);
+    }
+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailPKRepository.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailPKRepository.java
new file mode 100644
index 0000000..0644f8a
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailPKRepository.java
@@ -0,0 +1,14 @@
+package org.apache.airavata.allocation.manager.db.repositories;
+
+import org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailPKEntity;
+import org.apache.airavata.sharing.registry.models.UserAllocationDetailPK;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UserAllocationDetailPKRepository extends AbstractRepository<UserAllocationDetailPK, UserAllocationDetailPKEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public UserAllocationDetailPKRepository(){
+        super(UserAllocationDetailPK.class, UserAllocationDetailPKEntity.class);
+    }
+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java
new file mode 100644
index 0000000..35366d6
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserAllocationDetailRepository.java
@@ -0,0 +1,14 @@
+package org.apache.airavata.allocation.manager.db.repositories;
+
+import org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity;
+import org.apache.airavata.sharing.registry.models.UserAllocationDetail;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UserAllocationDetailRepository extends AbstractRepository<UserAllocationDetail, UserAllocationDetailEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public UserAllocationDetailRepository(){
+        super(UserAllocationDetail.class, UserAllocationDetailEntity.class);
+    }
+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserDetailRepository.java b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserDetailRepository.java
new file mode 100644
index 0000000..55cd888
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/java/org/apache/airavata/allocation/manager/db/repositories/UserDetailRepository.java
@@ -0,0 +1,19 @@
+package org.apache.airavata.allocation.manager.db.repositories;
+
+import org.apache.airavata.allocation.manager.db.entities.UserDetailEntity;
+import org.apache.airavata.sharing.registry.models.UserDetail;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class UserDetailRepository extends AbstractRepository<UserDetail, UserAllocationEntity, String> {
+    private final static Logger logger = LoggerFactory.getLogger(DomainRepository.class);
+
+    public UserDetailRepository(){
+        super(UserDetail.class, UserDetailEntity.class);
+    }
+
+    public static void main(String args[])
+    {
+
+    }
+}
\ No newline at end of file
diff --git a/allocation-manager/allocation-manager-server/src/main/resources/META-INF/persistence.xml b/allocation-manager/allocation-manager-server/src/main/resources/META-INF/persistence.xml
new file mode 100644
index 0000000..a006ad6
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/resources/META-INF/persistence.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="2.0">
+
+    <persistence-unit name="airavata-allocation-manager">
+        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
+        <class>org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailEntity</class>
+        <class>org.apache.airavata.allocation.manager.db.entities.UserAllocationDetailPKEntity</class>
+        <class>org.apache.airavata.allocation.manager.db.entities.RequestStatusEntity</class>
+        <class>org.apache.airavata.allocation.manager.db.entities.UserDetailEntity</class>
+    </persistence-unit>
+</persistence>
diff --git a/allocation-manager/allocation-manager-server/src/main/resources/allocation-manager-mysql.sql b/allocation-manager/allocation-manager-server/src/main/resources/allocation-manager-mysql.sql
new file mode 100644
index 0000000..20824f6
--- /dev/null
+++ b/allocation-manager/allocation-manager-server/src/main/resources/allocation-manager-mysql.sql
@@ -0,0 +1,58 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+*/
+
+CREATE TABLE IF NOT EXISTS USER_ALLOCATION_DETAILS (
+    REQUESTED_DATE BIGINT NOT NULL,
+    TITLE TEXT NOT NULL,
+    PROJECT_DESCRIPTION TEXT NOT NULL,
+    KEYWORDS TEXT,
+    FIELD_OF_SCIENCE TEXT,
+    DOCUMENTS BLOB,
+    TYPE_OF_ALLOCATION VARCHAR (255) NOT NULL,
+    USERNAME VARCHAR (255) NOT NULL,
+    PROJECT_ID VARCHAR (255) ,
+    APPLICATIONS_TO_BE_USED TEXT,
+    SPECIFIC_RESOURCE_SELECTION TEXT,
+    SERVICE_UNITS BIGINT default 1,
+    TYPICAL_SU_PER_JOB BIGINT,
+    MAX_MEMORY_PER_CPU BIGINT,
+    DISK_USAGE_RANGE_PER_JOB BIGINT,
+    NUMBER_OF_CPU_PER_JOB BIGINT,
+    PROJECT_REVIEWED_AND_FUNDED_BY TEXT,
+    PRIMARY KEY (PROJECT_ID, USERNAME)
+);
+
+CREATE TABLE IF NOT EXISTS USER_DETAILS (
+    USERNAME VARCHAR (255) PRIMARY KEY,
+    PASSWORD VARCHAR (255) NOT NULL,
+    FULL_NAME TEXT,
+    EMAIL TEXT NOT NULL,
+    USER_TYPE VARCHAR (255) NOT NULL
+);
+
+CREATE TABLE IF NOT EXISTS REQUEST_STATUS (
+    PROJECT_ID VARCHAR (255) PRIMARY KEY,
+    STATUS VARCHAR (255) NOT NULL,
+    REVIEWERS TEXT,
+    START_DATE BIGINT,
+    END_DATE BIGINT,
+    AWARD_ALLOCATION BIGINT
+);