package com.ircim;

import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import org.springframework.transaction.annotation.Transactional;

/**
* @ModelCoreReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/.properties.srv]
* @generated
*/

@Service("IRCIMService")
@Transactional
public class IRCIMServiceImpl implements IRCIMService {

/**
* @ModelReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/.properties.srv#//@variables%5Bname='cacheManager'%5D]
*/
@Autowired
CacheManager cacheManager;

/**
* @ModelReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/.properties.srv#//@variables%5Bname='lon'%5D]
*/
Integer lon = new Integer(-1);

/**
* @ModelReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/.properties.srv#//@variables%5Bname='value'%5D]
*/
volatile int value;

/**
* Instantiates a new IRCIMServiceImpl.
*
* @ModelReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/.properties.srv]
* @AuxiliaryModelComponent
*/
public IRCIMServiceImpl() {
}

/**
* @ModelReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/push%7Bf9d17626-a7c6-4989-8b8e-d471cb919940%7D/.properties.swoperation]
*/
@Transactional
public Integer push(String text) {
value++;
//TODO Implement this method
if (text == null)
return lon;
if (text.length() > 1024 * 1024)
return lon;

//final int time = value;

//Cache test = singletonManager.getCache("testCache");
final Cache cache = cacheManager.getCache("texts");
cache.put(new Element(value, text));

//final Element object = cache.get(time);
//System.out.println(value);
return value;
}

/**
* @ModelReference [platform:/resource/IRCIMServices/.springDSL/com/ircim/IRCIMService/get%7B8d04d4a1-5843-4eb2-bfe8-7c852fd898f9%7D/.properties.swoperation]
*/
@Transactional
public String get(Integer uuid) {
if (uuid == null)
return null;
final Cache cache = cacheManager.getCache("texts");
//System.out.println("Query:"+uuid);
final Element texts = cache.get(uuid);
if (texts == null)
return null;

return texts.getValue().toString();
}
}