001/* 002 * Copyright 2006 - 2013 003 * Stefan Balev <stefan.balev@graphstream-project.org> 004 * Julien Baudry <julien.baudry@graphstream-project.org> 005 * Antoine Dutot <antoine.dutot@graphstream-project.org> 006 * Yoann Pigné <yoann.pigne@graphstream-project.org> 007 * Guilhelm Savin <guilhelm.savin@graphstream-project.org> 008 * 009 * This file is part of GraphStream <http://graphstream-project.org>. 010 * 011 * GraphStream is a library whose purpose is to handle static or dynamic 012 * graph, create them from scratch, file or any source and display them. 013 * 014 * This program is free software distributed under the terms of two licenses, the 015 * CeCILL-C license that fits European law, and the GNU Lesser General Public 016 * License. You can use, modify and/ or redistribute the software under the terms 017 * of the CeCILL-C license as circulated by CEA, CNRS and INRIA at the following 018 * URL <http://www.cecill.info> or under the terms of the GNU LGPL as published by 019 * the Free Software Foundation, either version 3 of the License, or (at your 020 * option) any later version. 021 * 022 * This program is distributed in the hope that it will be useful, but WITHOUT ANY 023 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 024 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. 025 * 026 * You should have received a copy of the GNU Lesser General Public License 027 * along with this program. If not, see <http://www.gnu.org/licenses/>. 028 * 029 * The fact that you are presently reading this means that you have had 030 * knowledge of the CeCILL-C and LGPL licenses and that you accept their terms. 031 */ 032package org.graphstream.stream.sync; 033 034public class SourceTime { 035 protected String sourceId; 036 /** 037 * Current value of the time for this source. 038 */ 039 protected long currentTimeId; 040 /** 041 * 042 */ 043 protected SinkTime sinkTime; 044 045 /** 046 * Create a new SourceTime for a given id. Current time id is set to 0. 047 */ 048 public SourceTime() { 049 this(0); 050 } 051 052 /** 053 * Create a new SourceTime for a given id and a given time. 054 * 055 * @param currentTimeId 056 */ 057 public SourceTime(long currentTimeId) { 058 this(null, currentTimeId, null); 059 } 060 061 public SourceTime(String sourceId) { 062 this(sourceId, 0, null); 063 } 064 065 public SourceTime(String sourceId, SinkTime sinkTime) { 066 this(sourceId, 0, sinkTime); 067 } 068 069 /** 070 * Create a new SourceTime for a given id and a given time. 071 * 072 * @param currentTimeId 073 */ 074 public SourceTime(String sourceId, long currentTimeId) { 075 this(sourceId, currentTimeId, null); 076 } 077 078 public SourceTime(String sourceId, long currentTimeId, SinkTime sinkTime) { 079 this.sourceId = sourceId; 080 this.currentTimeId = currentTimeId; 081 this.sinkTime = sinkTime; 082 } 083 084 public SinkTime getSinkTime() { 085 return sinkTime; 086 } 087 088 public String getSourceId() { 089 return sourceId; 090 } 091 092 public void setSourceId(String sourceId) { 093 this.sourceId = sourceId; 094 } 095 096 public void setSinkTime(SinkTime st) { 097 this.sinkTime = st; 098 } 099 100 public long newEvent() { 101 currentTimeId++; 102 103 if (sinkTime != null) 104 sinkTime.setTimeFor(sourceId, currentTimeId); 105 106 return currentTimeId; 107 } 108}