/* It is a application for event distribution to event n-consumers with m-sources. Copyright (C) 2010 "Imran M Yousuf <imran@smartitengineering.com>" This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.smartitengineering.event.hub.spi.hbase.persistents; import com.smartitengineering.dao.impl.hbase.spi.domain.AbstractHBaseDomain; import java.io.InputStream; import java.util.Arrays; import java.util.Date; import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; /** * * @author imyousuf */ public class PersistentEvent extends AbstractHBaseDomain<PersistentEvent, EventId> { static final String PLACE_HOLDER_ID = "id"; static final String UUID = "uuid"; static final String CHANNEL_ID = "channelId"; private String contentType, channelId, uuid, placeholderId; private byte[] content; private Date creationDateTime; public void setPlaceholderId(String placeholder) { this.placeholderId = placeholder; } public String getPlaceholderId() { return placeholderId; } public String getChannelId() { return channelId; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public void setChannelId(String channelId) { EventId id = getId(); if (id == null) { id = new EventId(); setId(id); } if (StringUtils.isNotBlank(channelId)) { id.setChannelName(channelId); } this.channelId = channelId; } public void setCreationDateTime(Date creationDateTime) { if (creationDateTime != null) { this.creationDateTime = new Date(creationDateTime.getTime()); } else { this.creationDateTime = null; } } public Date getCreationDateTime() { if (creationDateTime == null) { return null; } return new Date(creationDateTime.getTime()); } public byte[] getContent() { if (content == null) { return null; } return Arrays.copyOf(content, content.length); } public void setContent(byte[] content) { this.content = Arrays.copyOf(content, content.length); } public String getContentType() { return contentType; } public void setContentType(String contentType) { this.contentType = contentType; } public InputStream getContentStream() { return IOUtils.toInputStream(new String(content)); } public void setContentStream(InputStream stream) { try { content = IOUtils.toByteArray(stream); } catch (Exception ex) { //TODO log exception } finally { IOUtils.closeQuietly(stream); } if (content == null) { content = new byte[0]; } } @Override public boolean isValid() { return getContent() != null && getContent().length > 0 && StringUtils.isNotBlank(getContentType()); } }