Commit 76ed4c53 by tuomari

Lisätty tuomarin intrasofta insomnia XI:stä.

git-svn-id: https://dev.intra.insomnia.fi/svn/trunk@5 8cf89bec-f6a3-4178-919f-364fb3449fe5
1 parent d6f10450
Showing with 2037 additions and 0 deletions
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>CamUploader</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.axdt.as3.imp.builder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.axdt.as3.imp.nature</nature>
</natures>
<linkedResources>
<link>
<name>logger</name>
<type>2</type>
<locationURI>logger</locationURI>
</link>
</linkedResources>
</projectDescription>
/**
* @author tuomari
*/
package fi.insomnia.camuploader {
import flash.media.Video;
import flash.media.Camera;
import flash.display.*;
import flash.text.*;
public class CAM extends Sprite {
public function CAM() {
var camera:Camera = Camera.getCamera();
camera.setQuality(0, 100);
camera.setMode(320,240,30,false);
var video:Video = video = new Video();
video.attachCamera(camera);
addChild(video);
}
}
}
\ No newline at end of file
/* AS3
Copyright 2007 Jonathan Marston
*/
package fi.insomnia.camuploader
{
/**
* Take a fileName, byteArray, and parameters object as input and return ByteArray post data suitable for a UrlRequest as output
*
* @see http://marstonstudio.com/?p=36
* @see http://www.w3.org/TR/html4/interact/forms.html
* @see http://www.jooce.com/blog/?p=143
* @see http://www.jooce.com/blog/wp%2Dcontent/uploads/2007/06/uploadFile.txt
* @see http://blog.je2050.de/2006/05/01/save-bytearray-to-file-with-php/
*
* @author Jonathan Marston
* @version 2007.08.19
*
* This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License.
* @see http://creativecommons.org/licenses/by-nc-sa/3.0/
*
*/
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.utils.ByteArray;
import flash.utils.Endian;
public class UploadPostHelper
{
//--------------------------------------
// PUBLIC METHODS
//--------------------------------------
/**
* Boundary used to break up different parts of the http POST body
*/
private static var _boundary:String = "";
/**
* Get the boundary for the post.
* Must be passed as part of the contentType of the UrlRequest
*/
public static function getBoundary():String {
if(_boundary.length == 0) {
for (var i:int = 0; i < 0x20; i++ ) {
_boundary += String.fromCharCode( int( 97 + Math.random() * 25 ) );
}
}
return _boundary;
}
/**
* Create post data to send in a UrlRequest
*/
public static function getPostData(fileName:String, byteArray:ByteArray, parameters:Object = null):ByteArray {
var i:int;
var bytes:String;
var postData:ByteArray = new ByteArray();
postData.endian = Endian.BIG_ENDIAN;
//add Filename to parameters
if(parameters == null) {
parameters = new Object();
}
parameters.Filename = fileName;
//add parameters to postData
for(var name:String in parameters) {
postData = BOUNDARY(postData);
postData = LINEBREAK(postData);
bytes = 'Content-Disposition: form-data; name="' + name + '"';
for ( i = 0; i < bytes.length; i++ ) {
postData.writeByte( bytes.charCodeAt(i) );
}
postData = LINEBREAK(postData);
postData = LINEBREAK(postData);
postData.writeUTFBytes(parameters[name]);
postData = LINEBREAK(postData);
}
//add Filedata to postData
postData = BOUNDARY(postData);
postData = LINEBREAK(postData);
bytes = 'Content-Disposition: form-data; name="Filedata"; filename="';
for ( i = 0; i < bytes.length; i++ ) {
postData.writeByte( bytes.charCodeAt(i) );
}
postData.writeUTFBytes(fileName);
postData = QUOTATIONMARK(postData);
postData = LINEBREAK(postData);
bytes = 'Content-Type: application/octet-stream';
for ( i = 0; i < bytes.length; i++ ) {
postData.writeByte( bytes.charCodeAt(i) );
}
postData = LINEBREAK(postData);
postData = LINEBREAK(postData);
postData.writeBytes(byteArray, 0, byteArray.length);
postData = LINEBREAK(postData);
//add upload filed to postData
postData = LINEBREAK(postData);
postData = BOUNDARY(postData);
postData = LINEBREAK(postData);
bytes = 'Content-Disposition: form-data; name="Upload"';
for ( i = 0; i < bytes.length; i++ ) {
postData.writeByte( bytes.charCodeAt(i) );
}
postData = LINEBREAK(postData);
postData = LINEBREAK(postData);
bytes = 'Submit Query';
for ( i = 0; i < bytes.length; i++ ) {
postData.writeByte( bytes.charCodeAt(i) );
}
postData = LINEBREAK(postData);
//closing boundary
postData = BOUNDARY(postData);
postData = DOUBLEDASH(postData);
return postData;
}
//--------------------------------------
// EVENT HANDLERS
//--------------------------------------
//--------------------------------------
// PRIVATE & PROTECTED INSTANCE METHODS
//--------------------------------------
/**
* Add a boundary to the PostData with leading doubledash
*/
private static function BOUNDARY(p:ByteArray):ByteArray {
var l:int = UploadPostHelper.getBoundary().length;
p = DOUBLEDASH(p);
for (var i:int = 0; i < l; i++ ) {
p.writeByte( _boundary.charCodeAt( i ) );
}
return p;
}
/**
* Add one linebreak
*/
private static function LINEBREAK(p:ByteArray):ByteArray {
p.writeShort(0x0d0a);
return p;
}
/**
* Add quotation mark
*/
private static function QUOTATIONMARK(p:ByteArray):ByteArray {
p.writeByte(0x22);
return p;
}
/**
* Add Double Dash
*/
private static function DOUBLEDASH(p:ByteArray):ByteArray {
p.writeShort(0x2d2d);
return p;
}
}
}
\ No newline at end of file
/**
* @author tuomari
*/
package fi.insomnia.camuploader {
import flash.display.*;
import flash.events.MouseEvent;
import flash.text.*;
import flash.media.Video;
import flash.media.Camera;
import flash.geom.Matrix;
import flash.utils.ByteArray;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.URLRequestMethod;
import flash.net.URLRequestHeader;
import flash.net.URLLoaderDataFormat;
import mx.graphics.codec.PNGEncoder;
import flash.display.StageScaleMode;
public class Uploader extends Sprite {
private var button:Sprite = new Sprite();
private var video:Video;
private var camera:Camera;
private var userid:String;
private var origin:String;
public function Uploader() {
// stage.scaleMode = StageScaleMode.NO_SCALE;
camera= Camera.getCamera();
camera.setQuality(0, 100);
camera.setMode(320,240,25,true);
video = new Video();
video.width = 320;
video.height = 240;
video.attachCamera(camera);
addChild(video);
button.graphics.clear();
button.graphics.beginFill(0xD4D4D4); // grey color
button.graphics.drawRoundRect(55, 250, 80, 25, 10, 10); // x, y, width, height, ellipseW, ellipseH
button.graphics.endFill();
var textLabel:TextField = new TextField()
userid = this.root.loaderInfo.parameters["userid"]
origin = this.root.loaderInfo.parameters["origin"]
textLabel.text = "Ota kuva id: " + userid;
textLabel.x = 70;
textLabel.y = 255;
textLabel.selectable = false;
button.addEventListener(MouseEvent.CLICK, takeSnapshot);
button.addChild(textLabel)
addChild(button);
var overlay:Sprite = new Sprite();
overlay.graphics.clear();
overlay.graphics.beginFill(0xFFFFFF);
overlay.graphics.drawRect(160,0,320,240);
overlay.graphics.endFill();
addChild(overlay);
}
private function takeSnapshot(event:MouseEvent):void
{
var snapshot:BitmapData =new BitmapData(160,240);
snapshot.draw(video,new Matrix());
var naama : ByteArray = new PNGEncoder().encode( snapshot );
trace("Took snapshot!");
// set up the request & headers for the image upload;
var urlRequest : URLRequest = new URLRequest();
urlRequest.url = origin+ '/UploadServlet/' + userid;
urlRequest.contentType = 'multipart/form-data; boundary=' + UploadPostHelper.getBoundary();
urlRequest.method = URLRequestMethod.POST;
urlRequest.data = UploadPostHelper.getPostData( 'image.png', naama );
urlRequest.requestHeaders.push( new URLRequestHeader( 'Cache-Control', 'no-cache' ) );
// create the image loader & send the image to the server;
var urlLoader : URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load( urlRequest );
trace("Image sent");
button.y = button.y+1;
video.attachCamera(null);
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>Desker</name>
<comment></comment>
<projects>
<project>DeskerBeans</project>
<project>InsomniaIntraWeb</project>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
</natures>
</projectDescription>
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="Desker">
<wb-resource deploy-path="/" source-path="/EarContent"/>
<dependent-module deploy-path="/" handle="module:/resource/DeskerBeans/DeskerBeans">
<dependent-object></dependent-object>
<dependency-type>uses</dependency-type>
</dependent-module>
<dependent-module deploy-path="/" handle="module:/resource/InsomniaIntraWeb/InsomniaIntraWeb">
<dependent-object></dependent-object>
<dependency-type>uses</dependency-type>
</dependent-module>
</wb-module>
</project-modules>
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="GlassFish v3 Java EE 6 2"/>
<fixed facet="jst.ear"/>
<installed facet="jst.ear" version="5.0"/>
<installed facet="sun.facet" version="9"/>
</faceted-project>
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="ejbModule"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6">
<attributes>
<attribute name="owner.project.facets" value="jst.java"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish v3 Java EE 6 2">
<attributes>
<attribute name="owner.project.facets" value="jst.ejb"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry kind="output" path="build/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DeskerBeans</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
#Thu Oct 22 16:42:40 EEST 2009
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="DeskerBeans">
<wb-resource deploy-path="/" source-path="/ejbModule"/>
<property name="java-output-path"/>
</wb-module>
</project-modules>
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="GlassFish v3 Java EE 6 2"/>
<fixed facet="jst.ejb"/>
<fixed facet="jst.java"/>
<installed facet="jst.java" version="6.0"/>
<installed facet="jst.ejb" version="3.0"/>
<installed facet="sun.facet" version="9"/>
</faceted-project>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans/>
</sun-ejb-jar>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun-ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 9.0 EJB 3.0//EN" "http://www.sun.com/software/appserver/dtds/sun-ejb-jar_3_0-0.dtd">
<sun-ejb-jar>
<enterprise-beans/>
</sun-ejb-jar>
package fi.insomnia.intra.dao;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import javax.persistence.EntityManager;
import javax.persistence.Query;
public class EntityQuery<T> {
private String namedQuery;
private String countQuery;
private EntityManager em;
private int pagesize = 0;
private int page = 0;
private long resultsize = 0;
private Map<String, Object> parameters = new HashMap<String, Object>();
private EntityQuery(String namedQuery, String countQuery, EntityManager em) {
this.namedQuery = namedQuery;
this.countQuery = countQuery;
this.em = em;
}
@SuppressWarnings("unchecked")
public List<T> getItems(IPagingStatus paging) {
Query query = em.createNamedQuery(namedQuery);
Query count = null;
if (getPagesize() > 0) {
query.setFirstResult(getPage() * getPagesize());
query.setMaxResults(getPagesize());
count = em.createNamedQuery(countQuery);
}
for (Entry<String, Object> obj : parameters.entrySet()) {
query.setParameter(obj.getKey(), obj.getValue());
if (count != null) {
count.setParameter(obj.getKey(), obj.getValue());
}
}
List ret = query.getResultList();
resultsize = ret.size();
if (count != null) {
Object resultO = count.getSingleResult();
if (resultO instanceof Long) {
resultsize = ((Long) resultO);
} else if (resultO instanceof Integer) {
resultsize = ((Integer) resultO).longValue();
}
}
return ret;
}
public void addParameter(String name, Object value)
{
parameters.put(name, value);
}
public long getResultsize() {
return resultsize;
}
public void setPage(int page) {
this.page = page;
}
public int getPage() {
return page;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getPagesize() {
return pagesize;
}
}
package fi.insomnia.intra.dao;
import javax.persistence.EntityManager;
public interface ExternalEntityManagerFactory {
EntityManager getExternalEntity();
}
package fi.insomnia.intra.dao;
import javax.persistence.EntityManager;
import javax.persistence.Query;
public class FoodwaveDAO extends GenericDAO {
public FoodwaveDAO(EntityManager em) {
super(em);
}
@Override
public long getAllCount() {
Query q = this.getEntityManager().createNamedQuery("countAllFoodwaves");
return (Long) q.getSingleResult();
}
@Override
protected String getAllNamedQuery() {
return "findAllFoodwaves";
}
}
package fi.insomnia.intra.dao;
import java.lang.reflect.ParameterizedType;
import java.math.BigInteger;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityNotFoundException;
import javax.persistence.Query;
import org.slf4j.LoggerFactory;
import fi.insomnia.intra.db.BaseEntity;
public abstract class GenericDAO<T extends BaseEntity> implements IGenericDao<T> {
private EntityManager entityManager;
private Class<T> clazz;
private ExternalEntityManagerFactory entityManagerfactory;
private static final org.slf4j.Logger logger = LoggerFactory.getLogger(GenericDAO.class);
@SuppressWarnings("unchecked")
public GenericDAO(EntityManager em) {
super();
setEntityManager(em);
clazz = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
protected GenericDAO(Class<T> clazz) {
super();
this.clazz = clazz;
// clazz = (Class<T>) ((ParameterizedType)
// getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
protected void setEntityManagerFactory(ExternalEntityManagerFactory emf) {
entityManagerfactory = emf;
}
protected EntityManager getEntityManager() {
EntityManager ret = entityManager;
if (entityManagerfactory != null) {
logger.debug("External entity manaer factory found. Returning entity from there");
ret = entityManagerfactory.getExternalEntity();
}
logger.debug("returning entityManager: {}", ret);
return ret;
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#load(java.math.BigInteger)
*/
public final T load(BigInteger id) throws EntityNotFoundException {
T entity = get(id);
if (entity == null) {
throw new EntityNotFoundException("entity " + clazz + "#" + id + " was not found");
}
return entity;
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#get(java.math.BigInteger)
*/
public final T get(BigInteger id) {
return (T) getEntityManager().find(clazz, id);
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#save(T)
*/
public void save(final T object) {
logger.debug("Saving object {}", object);
if (object.getId() != null) {
getEntityManager().merge(object);
} else {
getEntityManager().persist(object);
}
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#delete(T)
*/
public void delete(final T object) throws UnsupportedOperationException {
getEntityManager().remove(object);
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#refresh(T)
*/
public final void refresh(final T entity) {
getEntityManager().refresh(entity);
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#flushAndClear()
*/
public final void flushAndClear() {
getEntityManager().flush();
getEntityManager().clear();
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#delete(java.math.BigInteger)
*/
public void delete(BigInteger id) throws UnsupportedOperationException {
delete(load(id));
}
protected abstract String getAllNamedQuery();
public abstract long getAllCount();
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#getAllQuery()
*/
public Query getAllQuery() {
return getEntityManager().createNamedQuery(getAllNamedQuery());
}
public Query getAllCountQuery() {
return getEntityManager().createNamedQuery(getAllNamedQuery());
}
/*
* (non-Javadoc)
* @see fi.insomnia.intra.db.IGenericDao#getAll()
*/
@SuppressWarnings("unchecked")
public List<T> getAll() {
return getAllQuery().getResultList();
}
private void setEntityManager(EntityManager entityManager) {
this.entityManager = entityManager;
}
@SuppressWarnings("unchecked")
@Override
public List<T> getItems(IPagingStatus paging) {
Query q = getAllQuery();
long allCount = this.getAllCount();
return getPagination(paging, q, allCount);
}
protected List<T> getPagination(IPagingStatus paging, Query q, long allCount) {
paging.setTotalHits(allCount);
int firstresult = paging.getPagesize() * paging.getPage();
logger.info("Pagesize: {}, {}", paging.getPagesize(), firstresult);
q.setMaxResults(paging.getPagesize());
q.setFirstResult(firstresult);
List ret = q.getResultList();
logger.info("Retcount {}", ret.size());
return ret;
}
}
package fi.insomnia.intra.dao;
import java.util.Arrays;
import java.util.List;
import javax.persistence.EntityManager;
import fi.insomnia.intra.db.Usergroup;
public class GroupDAO extends GenericDAO<Usergroup> {
private static final String SORT = "name";
private static final List<String> FIELDS = Arrays.asList("name", "details");
public GroupDAO(EntityManager em) {
super(em);
}
protected GroupDAO() {
super(Usergroup.class);
}
@Override
protected String getAllNamedQuery() {
return "findAllGroups";
}
@Override
public long getAllCount() {
// TODO Auto-generated method stub
return 0;
}
}
package fi.insomnia.intra.dao;
import java.math.BigInteger;
import java.util.List;
import javax.persistence.EntityNotFoundException;
import javax.persistence.Query;
import fi.insomnia.intra.db.BaseEntity;
public interface IGenericDao<T extends BaseEntity> {
T load(BigInteger id) throws EntityNotFoundException;
T get(BigInteger id);
void save(final T object);
void delete(final T object) throws UnsupportedOperationException;
void refresh(final T entity);
void flushAndClear();
void delete(BigInteger id) throws UnsupportedOperationException;
Query getAllQuery();
List<T> getAll();
List<T> getItems(IPagingStatus paging);
}
\ No newline at end of file
package fi.insomnia.intra.dao;
public interface IPagingStatus {
int getPagesize();
int getPage();
void setTotalHits(long allCount);
void next();
void prev();
}
package fi.insomnia.intra.dao;
import javax.persistence.EntityManager;
import fi.insomnia.intra.db.Place;
public class PlaceDAO extends GenericDAO<Place> {
public PlaceDAO(EntityManager em) {
super(em);
}
protected PlaceDAO() {
super(Place.class);
}
@Override
protected String getAllNamedQuery() {
return "findAllPlaces";
}
@Override
public long getAllCount() {
// TODO Auto-generated method stub
return 0;
}
}
package fi.insomnia.intra.dao;
import java.util.Arrays;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.intra.db.User;
public class UserDAO extends GenericDAO<User> {
private static final Logger logger = LoggerFactory.getLogger(UserDAO.class);
private static final String SORT = "nick";
private static final List<String> FIELDS = Arrays.asList("nick", "name", "email", "address");
public UserDAO(EntityManager em) {
super(em);
}
protected UserDAO() {
super(User.class);
}
@Override
protected String getAllNamedQuery() {
return "findAllUsers";
}
public long getAllCount() {
Query q = getEntityManager().createNamedQuery("countAllUsers");
return getAllCount(q);
}
protected long getAllCount(Query q) {
Object ret = q.getSingleResult();
long retL = 0;
if (ret instanceof Long) {
retL = (Long) ret;
}
logger.info("Retcount: {}", retL);
return retL;
}
}
package fi.insomnia.intra.dao;
import javax.persistence.EntityManager;
import fi.insomnia.intra.db.UserImage;
public class UserImageDAO extends GenericDAO<UserImage> {
public UserImageDAO(EntityManager em) {
super(em);
}
protected UserImageDAO() {
super(UserImage.class);
}
@Override
protected String getAllNamedQuery() {
return "findAllUserImages";
}
@Override
public long getAllCount() {
// TODO Auto-generated method stub
return 0;
}
}
package fi.insomnia.intra.utilbeans;
import java.util.List;
import fi.insomnia.intra.dao.IPagingStatus;
import fi.insomnia.intra.db.BaseEntity;
public interface GenericItemDAOBean<T extends BaseEntity> {
List<T> getItems(IPagingStatus paging);
}
package fi.insomnia.intra.utilbeans;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import fi.insomnia.intra.dao.ExternalEntityManagerFactory;
import fi.insomnia.intra.dao.GroupDAO;
/**
* Session Bean implementation class GroupDaoBean
*/
@Stateless
public class GroupDaoBean extends GroupDAO implements GroupDaoBeanLocal, ExternalEntityManagerFactory {
@PersistenceContext(unitName="InsomniaIntraDB")
private EntityManager em;
/**
* Default constructor.
*/
public GroupDaoBean() {
super();
this.setEntityManagerFactory(this);
}
@Override
public EntityManager getExternalEntity() {
return em;
}
}
package fi.insomnia.intra.utilbeans;
import javax.ejb.Local;
import fi.insomnia.intra.dao.IGenericDao;
import fi.insomnia.intra.db.Usergroup;
@Local
public interface GroupDaoBeanLocal extends IGenericDao<Usergroup>{
}
package fi.insomnia.intra.utilbeans;
import fi.insomnia.intra.dao.IGenericDao;
import fi.insomnia.intra.db.UserImage;
public interface IUserImageDao extends IGenericDao<UserImage> {
}
package fi.insomnia.intra.utilbeans;
import java.math.BigDecimal;
public class PagingStatus {
private int pagesize;
private int page;
private long totalHits;
public PagingStatus(int defaultSize)
{
pagesize = defaultSize;
page = 0;
totalHits = 0;
}
public void setPagesize(int pagesize) {
this.pagesize = pagesize;
}
public int getPagesize() {
return pagesize;
}
public void setPage(int page) {
this.page = page;
}
public int getPage() {
return page;
}
public void setTotalHits(long l) {
this.totalHits = l;
}
public long getTotalHits() {
return totalHits;
}
public long getTotalPages()
{
BigDecimal pages = new BigDecimal(totalHits).divide(new BigDecimal(pagesize),BigDecimal.ROUND_CEILING);
return pages.setScale(0, BigDecimal.ROUND_CEILING).longValue();
}
public void next()
{
if(page < getTotalPages())
{
++page;
}
}
public void prev()
{
if(page > 0)
{
--page;
}
}
}
package fi.insomnia.intra.utilbeans;
import javax.ejb.Local;
import fi.insomnia.intra.dao.IPagingStatus;
@Local
public interface UserBeanLocal {
String getUsername();
String getRemoteUser();
boolean ifGrantedRole(String role);
void createUser(String username, String randomString);
String createUserWithGeneratedPassword(String username);
IPagingStatus createPagingStatus(long pagesize);
}
package fi.insomnia.intra.utilbeans;
import java.math.BigInteger;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.insomnia.intra.dao.ExternalEntityManagerFactory;
import fi.insomnia.intra.dao.IPagingStatus;
import fi.insomnia.intra.dao.UserDAO;
import fi.insomnia.intra.db.User;
/**
* Session Bean implementation class UserDaoBeanLocal
*/
@Stateless(name="UserDaoBeanRemote")
public class UserDaoBean extends UserDAO implements UserDaoBeanLocal, ExternalEntityManagerFactory, UserDaoBeanRemote {
private static final Logger logger = LoggerFactory.getLogger(UserDaoBean.class);
@PersistenceContext(unitName = "InsomniaIntraDB")
private EntityManager em;
@EJB
private UserPropertiesBeanLocal userProperties;
/**
* Default constructor.
*/
public UserDaoBean() {
super();
this.setEntityManagerFactory(this);
}
@Override
public EntityManager getExternalEntity() {
logger.debug("getting external EntityManager from UserDAOBean: {}", em);
return em;
}
/*
* public List<User> searchUser(String search) { CompassPagingStatus stat =
* this.createPagingStatus(userProperties.getPageSize()); return
* this.getCompassSearcher().paginationQuery(stat, search); } public void
* indexDatabase() { CompassGps gps = EclipseLinkHelper.getCompassGps(em);
* gps.index(); }
*/
@Override
public void indexDatabase() {
// TODO Auto-generated method stub
}
@Override
public List<User> searchUser(String search) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<User> getSearchItems(String search, IPagingStatus status) {
Query find = em.createNamedQuery("findSearch");
Query count = em.createNamedQuery("countSearch");
String searchstr = "%" + search.trim() + "%";
find.setParameter("search", searchstr);
count.setParameter("search", searchstr);
BigInteger id = null;
try {
id = new BigInteger(search);
} catch (Throwable t) {
id = BigInteger.ZERO;
}
find.setParameter("searchId", id);
count.setParameter("searchId", id);
return this.getPagination(status, find, this.getAllCount(count));
}
@Override
public User findByTag(String tag) {
if (tag != null && !tag.trim().isEmpty()) {
Query q = em.createQuery("select Object(u) from User as u where tag = :tag");
q.setParameter("tag", tag);
return (User) q.getSingleResult();
}
return null;
}
@Override
public void foundTag(String name, String tag) {
logger.warn("Found name {}, tag {}", name, tag);
}
}
package fi.insomnia.intra.utilbeans;
import java.util.List;
import javax.ejb.Local;
import fi.insomnia.intra.dao.IGenericDao;
import fi.insomnia.intra.dao.IPagingStatus;
import fi.insomnia.intra.db.User;
@Local
public interface UserDaoBeanLocal extends IGenericDao<User> {
List<User> searchUser(String search);
void indexDatabase();
List<User> getSearchItems(String search, IPagingStatus status);
User findByTag(String tag);
}
package fi.insomnia.intra.utilbeans;
import javax.ejb.Remote;
@Remote
public interface UserDaoBeanRemote {
public void foundTag(String name, String tag);
}
package fi.insomnia.intra.utilbeans;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.math.BigInteger;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import sun.misc.BASE64Encoder;
import fi.insomnia.intra.dao.ExternalEntityManagerFactory;
import fi.insomnia.intra.dao.UserImageDAO;
import fi.insomnia.intra.db.User;
import fi.insomnia.intra.db.UserImage;
/**
* Session Bean implementation class UserImageBean
*/
@Stateless
public class UserImageDaoBean extends UserImageDAO implements UserImageDaoBeanLocal, ExternalEntityManagerFactory {
@PersistenceContext(unitName = "InsomniaIntraDB")
private EntityManager em;
private static final Logger logger = LoggerFactory.getLogger(UserImageDaoBean.class);
@EJB
private UserDaoBeanLocal userbean;
/**
* Default constructor.
*/
public UserImageDaoBean() {
super();
this.setEntityManagerFactory(this);
}
@Override
public EntityManager getExternalEntity() {
return em;
}
@Override
public void createImage(User user, byte[] bs) {
UserImage img = new UserImage();
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
new BASE64Encoder().encodeBuffer(bs, out);
img.setDefaultImage(true);
img.setImageData(out.toByteArray());
img.setOwner(user);
img.setMimetype("img/png");
logger.info("Persisting image");
em.persist(img);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
package fi.insomnia.intra.utilbeans;
import java.math.BigInteger;
import javax.ejb.Local;
import fi.insomnia.intra.db.User;
@Local
public interface UserImageDaoBeanLocal extends IUserImageDao {
void createImage(User user, byte[] bs);
}
package fi.insomnia.intra.utilbeans;
import javax.ejb.Stateless;
/**
* Session Bean implementation class UserProperties
*/
@Stateless
public class UserPropertiesBean implements UserPropertiesBeanLocal {
/**
* Default constructor.
*/
public UserPropertiesBean() {
// TODO Auto-generated constructor stub
}
@Override
public int getPageSize() {
// TODO Auto-generated method stub
return 30;
}
}
package fi.insomnia.intra.utilbeans;
import javax.ejb.Local;
@Local
public interface UserPropertiesBeanLocal {
int getPageSize();
}
package test;
import javax.ejb.Stateless;
/**
* Session Bean implementation class Foo
*/
@Stateless
public class Foo implements FooLocal {
/**
* Default constructor.
*/
public Foo() {
// TODO Auto-generated constructor stub
}
}
package test;
import javax.ejb.Local;
@Local
public interface FooLocal {
}
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path="src"/>
<classpathentry kind="con" path="org.eclipse.jst.j2ee.internal.module.container"/>
<classpathentry exported="true" kind="lib" path="/Users/tuomari/workspace/InsomniaIntraEAR/EarContent/lib/compass-2.2.0.jar"/>
<classpathentry exported="true" kind="lib" path="/Users/tuomari/workspace/InsomniaIntraEAR/EarContent/lib/slf4j-api-1.5.8.jar"/>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/com.sun.enterprise.jst.server.runtimeTarget/GlassFish v3 Java EE 6 2">
<attributes>
<attribute name="owner.project.facets" value="jst.utility;#system#"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.launching.macosx.MacOSXType/JVM 1.6">
<attributes>
<attribute name="owner.project.facets" value="jst.java"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="build/classes"/>
</classpath>
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>InsomniaIntraDB</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.wst.validation.validationbuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
<nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
<nature>org.eclipse.wst.common.project.facet.core.nature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
#Mon Jul 06 02:53:17 EEST 2009
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
org.eclipse.jdt.core.compiler.compliance=1.6
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
org.eclipse.jdt.core.compiler.debug.localVariable=generate
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.source=1.6
#Sun Jul 05 20:30:33 EEST 2009
eclipse.preferences.version=1
org.eclipse.jpt.core.discoverAnnotatedClasses=true
org.eclipse.jpt.core.platform=eclipselink1_1
<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="InsomniaIntraDB">
<wb-resource deploy-path="/" source-path="/src"/>
</wb-module>
</project-modules>
<root>
<facet id="jpt.jpa">
<node name="libprov">
<attribute name="provider-id" value="eclipselink-110-osgi-bundles-library-provider"/>
</node>
<node name="osgi-bundles-container">
<attribute name="bundles" value="javax.persistence:[1.0.0,2.0.0);org.eclipse.persistence.core:[1.1.0,2.0.0);org.eclipse.persistence.jpa:[1.1.0,2.0.0);org.eclipse.persistence.asm:[1.1.0,2.0.0);org.eclipse.persistence.antlr:[1.1.0,2.0.0)"/>
<attribute name="label" value="EclipseLink 1.1.x"/>
</node>
</facet>
</root>
<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="GlassFish v3 Java EE 6 2"/>
<fixed facet="jpt.jpa"/>
<fixed facet="jst.java"/>
<fixed facet="jst.utility"/>
<installed facet="jst.java" version="6.0"/>
<installed facet="jst.utility" version="1.0"/>
<installed facet="jpt.jpa" version="1.0"/>
</faceted-project>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="InsomniaIntraDB">
<jta-data-source>jdbc/InsomniaIntraDb</jta-data-source>
<properties>
<property name="eclipselink.target-database" value="MySQL" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="both" />
<property name="eclipselink.jdbc.cache-statements" value="false"/>
<property name="eclipselink.cache.type.default" value="NONE"/>
<property name="eclipselink.cache.shared.default" value="false"/>
<!-- property name="eclipselink.session.customizer"
value="org.compass.gps.device.jpa.embedded.eclipselink.CompassSessionCustomizer" />
<property name="compass.engine.connection" value="file:///var/lib/compass/InsomniaIntra"/>
-->
</properties>
</persistence-unit>
</persistence>
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0"
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="InsomniaIntraDB">
<jta-data-source>jdbc/InsomniaIntraDb</jta-data-source>
<properties>
<property name="eclipselink.target-database" value="MySQL" />
<property name="eclipselink.ddl-generation" value="create-tables" />
<property name="eclipselink.ddl-generation.output-mode"
value="both" />
<property name="eclipselink.jdbc.cache-statements" value="false"/>
<property name="eclipselink.cache.type.default" value="NONE"/>
<property name="eclipselink.cache.shared.default" value="false"/>
<!-- property name="eclipselink.session.customizer"
value="org.compass.gps.device.jpa.embedded.eclipselink.CompassSessionCustomizer" />
<property name="compass.engine.connection" value="file:///var/lib/compass/InsomniaIntra"/>
-->
</properties>
</persistence-unit>
</persistence>
package fi.insomnia.intra.db;
import static javax.persistence.GenerationType.IDENTITY;
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;
import javax.persistence.Version;
import org.compass.annotations.SearchableId;
/**
* Entity implementation class for Entity: BaseEntity
*
*/
@MappedSuperclass
public abstract class BaseEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = 3753550744006430665L;
@Id
@SearchableId
@GeneratedValue(strategy = IDENTITY)
private BigInteger id;
@Version
@Column(nullable=false)
private long jpaVersionField;
public BaseEntity() {
super();
}
public BigInteger getId() {
return this.id;
}
public void setId(BigInteger id) {
this.id = id;
}
public long getJpaVersionField() {
return this.jpaVersionField;
}
public void setJpaVersionField(long jpaVersionField) {
this.jpaVersionField = jpaVersionField;
}
}
package fi.insomnia.intra.db;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Lob;
import javax.persistence.OneToMany;
import org.eclipse.persistence.annotations.Cache;
@Entity
@Cache(alwaysRefresh=true)
public class Discount extends BaseEntity {
/**
*
*/
private static final long serialVersionUID = 6100697565643252782L;
private boolean active;
private String code;
@Column(length=3)
private int percent;
@Lob
private String details;
@OneToMany(mappedBy="code")
private List<Usergroup> groups;
@OneToMany(mappedBy="code")
private List<Usergroup> places;
public boolean isActive() {
return active;
}
public void setActive(boolean active) {
this.active = active;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public int getPercent() {
return percent;
}
public void setPercent(int percent) {
this.percent = percent;
}
public String getDetails() {
return details;
}
public void setDetails(String details) {
this.details = details;
}
public void setGroups(List<Usergroup> groups) {
this.groups = groups;
}
public List<Usergroup> getGroups() {
return groups;
}
public void setPlaces(List<Usergroup> places) {
this.places = places;
}
public List<Usergroup> getPlaces() {
return places;
}
}
package fi.insomnia.intra.db;
import fi.insomnia.intra.db.BaseEntity;
import java.io.Serializable;
import java.util.Calendar;
import java.util.List;
import javax.persistence.*;
import static javax.persistence.TemporalType.TIMESTAMP;
/**
* Entity implementation class for Entity: Foodwave
*
*/
@Entity
@NamedQueries(value = { @NamedQuery(name = "findAllFoodwaves", query = "select f from Fooodwave f"),
@NamedQuery(name = "countAllFoodwaves", query = "select count(f) as ret from Fooodwave f") })
public class Foodwave extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
public Foodwave() {
super();
}
private String name;
private String description;
@Temporal(value=TIMESTAMP)
private Calendar time;
private boolean closed;
@OneToMany(mappedBy="wave")
private List<FoodwaveOrder> orders;
@ManyToMany(mappedBy = "waves")
private List<FoodwaveElement> elements;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public Calendar getTime() {
return time;
}
public void setTime(Calendar time) {
this.time = time;
}
public boolean isClosed() {
return closed;
}
public void setClosed(boolean closed) {
this.closed = closed;
}
public List<FoodwaveOrder> getOrders() {
return orders;
}
public void setOrders(List<FoodwaveOrder> orders) {
this.orders = orders;
}
public List<FoodwaveElement> getElements() {
return elements;
}
public void setElements(List<FoodwaveElement> elements) {
this.elements = elements;
}
}
package fi.insomnia.intra.db;
import java.math.BigDecimal;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToMany;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
@Entity
@NamedQueries(value = { @NamedQuery(name = "findFoowdaveElements", query = "select fe from Fooodwave fe"),
@NamedQuery(name = "countFoowdaveElements", query = "select count(fe) as ret from FoodwaveElement fe") })
public class FoodwaveElement extends BaseEntity {
/**
*
*/
private static final long serialVersionUID = -6804142902657108657L;
private String name;
private String description;
@Column(precision = 10, scale = 2)
private BigDecimal price;
@ManyToMany
private List<Foodwave> waves;
@OneToMany(mappedBy="element")
private List<FoodwaveOrder> orders;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public List<Foodwave> getWaves() {
return waves;
}
public void setWaves(List<Foodwave> waves) {
this.waves = waves;
}
public List<FoodwaveOrder> getOrders() {
return orders;
}
public void setOrders(List<FoodwaveOrder> orders) {
this.orders = orders;
}
}
package fi.insomnia.intra.db;
import java.io.Serializable;
import java.math.BigDecimal;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
/**
* Entity implementation class for Entity: FoodwaveOrder
*
*/
@Entity
public class FoodwaveOrder extends BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
public FoodwaveOrder() {
super();
}
@ManyToOne
private Foodwave wave;
@ManyToOne
private User user;
private boolean paid;
@Column(precision = 10, scale = 2)
private BigDecimal price;
@ManyToOne
private FoodwaveElement element;
public Foodwave getWave() {
return wave;
}
public void setWave(Foodwave wave) {
this.wave = wave;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public boolean isPaid() {
return paid;
}
public void setPaid(boolean paid) {
this.paid = paid;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public FoodwaveElement getElement() {
return element;
}
public void setElement(FoodwaveElement element) {
this.element = element;
}
}
package fi.insomnia.intra.db;
import fi.insomnia.intra.db.BaseEntity;
import fi.insomnia.intra.db.Usergroup;
import fi.insomnia.intra.db.User;
import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;
import org.eclipse.persistence.annotations.Cache;
/**
* Entity implementation class for Entity: Place
*
*/
@Entity
@Cache(alwaysRefresh=true)
@NamedQuery(name = "findAllPlaces", query = "select p from Place p")
public class Place extends BaseEntity implements Serializable {
/**
*
*/
private static final long serialVersionUID = -5764729988681758345L;
@ManyToOne
private Usergroup group;
@ManyToOne
private User user;
private String place;
private int coordX;
private int coordY;
private int type;
@Lob
private String description;
@ManyToOne
private Discount code;
public Place() {
super();
}
public Usergroup getGroup() {
return this.group;
}
public void setGroup(Usergroup group) {
this.group = group;
}
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user = user;
}
public String getPlace() {
return this.place;
}
public void setPlace(String place) {
this.place = place;
}
public int getCoordX() {
return this.coordX;
}
public void setCoordX(int coordX) {
this.coordX = coordX;
}
public int getCoordY() {
return this.coordY;
}
public void setCoordY(int coordY) {
this.coordY = coordY;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
public void setCode(Discount code) {
this.code = code;
}
public Discount getCode() {
return code;
}
public void setType(int type) {
this.type = type;
}
public int getType() {
return type;
}
}
package fi.insomnia.intra.db;
import static javax.persistence.TemporalType.TIMESTAMP;
import java.math.BigDecimal;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
@Entity
public class ShopAction extends BaseEntity {
/**
*
*/
private static final long serialVersionUID = -7348146332511985007L;
@ManyToOne
private ShopElement element;
@ManyToOne
private User shopper;
@Column(precision = 10, scale = 2)
private BigDecimal price;
private int count;
@Temporal(value = TIMESTAMP)
private Calendar time = Calendar.getInstance();
public ShopElement getElement() {
return element;
}
public void setElement(ShopElement element) {
this.element = element;
}
public User getShopper() {
return shopper;
}
public void setShopper(User shopper) {
this.shopper = shopper;
}
public BigDecimal getPrice() {
return price;
}
public void setPrice(BigDecimal price) {
this.price = price;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
public void setTime(Calendar time) {
this.time = time;
}
public Calendar getTime() {
return time;
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!