Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Simonstrator
PeerfactSim.KOM
Commits
64814439
Commit
64814439
authored
Sep 27, 2017
by
Björn Richerzhagen
Committed by
Jose Ignacio Monreal Bailey
Aug 20, 2019
Browse files
Added new DAO-Type for SpatialMetrics
parent
b4e2bf3d
Changes
4
Hide whitespace changes
Inline
Side-by-side
src/de/tud/kom/p2psim/impl/util/db/dao/DAO.java
View file @
64814439
...
...
@@ -48,6 +48,7 @@ import de.tud.kom.p2psim.impl.util.db.metric.Measurement;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementPair
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementPairList
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementSingle
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementSpatial
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementStatistic
;
import
de.tud.kom.p2psim.impl.util.db.metric.Metric
;
import
de.tud.kom.p2psim.impl.util.db.metric.MetricDescription
;
...
...
@@ -155,6 +156,7 @@ public class DAO {
cfg
.
addAnnotatedClass
(
MeasurementPair
.
class
);
cfg
.
addAnnotatedClass
(
MeasurementPairList
.
class
);
cfg
.
addAnnotatedClass
(
MeasurementSingle
.
class
);
cfg
.
addAnnotatedClass
(
MeasurementSpatial
.
class
);
cfg
.
addAnnotatedClass
(
MeasurementStatistic
.
class
);
cfg
.
addAnnotatedClass
(
Metric
.
class
);
cfg
.
addAnnotatedClass
(
MetricDescription
.
class
);
...
...
src/de/tud/kom/p2psim/impl/util/db/dao/metric/MeasurementDAO.java
View file @
64814439
...
...
@@ -32,6 +32,7 @@ import de.tud.kom.p2psim.impl.util.db.metric.Measurement;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementPair
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementPairList
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementSingle
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementSpatial
;
import
de.tud.kom.p2psim.impl.util.db.metric.MeasurementStatistic
;
import
de.tud.kom.p2psim.impl.util.db.metric.Metric
;
import
de.tud.kom.p2psim.impl.util.db.metric.MetricDescription
;
...
...
@@ -101,6 +102,31 @@ public class MeasurementDAO extends DAO {
hostMetric
);
addToPersistQueue
(
measurement
);
}
/**
* Store a single measurement for a host, tied to a specific location.
*
* @param metricDesc
* @param hostId
* @param time
* @param value
* @param locationX
* @param locationY
*/
public
static
void
storeSpatialMeasurement
(
MetricDescription
metricDesc
,
long
hostId
,
long
time
,
double
value
,
int
locationX
,
int
locationY
)
{
if
(
inactive
)
{
return
;
}
Metric
metric
=
MetricDAO
.
lookupSpatialMetric
(
metricDesc
);
HostMetric
hostMetric
=
HostMetricDAO
.
lookupHostMetric
(
metric
,
hostId
);
MeasurementSpatial
measurement
=
new
MeasurementSpatial
(
time
,
value
,
hostMetric
,
locationX
,
locationY
);
addToPersistQueue
(
measurement
);
}
/**
* Stores for a series of measurements the given values for a host. The
...
...
src/de/tud/kom/p2psim/impl/util/db/dao/metric/MetricDAO.java
View file @
64814439
...
...
@@ -27,7 +27,7 @@ public class MetricDAO extends DAO {
/**
* Identifier for a single metric
*/
SINGLE
,
SINGLE
,
SPATIAL
,
/**
* Identifier for an aggregate metric
*/
...
...
@@ -62,6 +62,16 @@ public class MetricDAO extends DAO {
public
static
Metric
lookupSingleMetric
(
MetricDescription
metricDesc
)
{
return
lookupMetric
(
metricDesc
,
MetricType
.
SINGLE
);
}
/** Retrieve a {@link Metric} object for the given MetricDescription
* for spatial value metrics.
*
* If there is no matching Metric object, it is created, persisted, and cached
* automatically.
*/
public
static
Metric
lookupSpatialMetric
(
MetricDescription
metricDesc
)
{
return
lookupMetric
(
metricDesc
,
MetricType
.
SPATIAL
);
}
/** Retrieve a {@link Metric} object for the given MetricDescription
* for pair value metrics.
...
...
src/de/tud/kom/p2psim/impl/util/db/metric/MeasurementSpatial.java
0 → 100644
View file @
64814439
/*
* Copyright (c) 2005-2010 KOM – Multimedia Communications Lab
*
* This file is part of PeerfactSim.KOM.
*
* PeerfactSim.KOM is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* PeerfactSim.KOM 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 PeerfactSim.KOM. If not, see <http://www.gnu.org/licenses/>.
*
*/
package
de.tud.kom.p2psim.impl.util.db.metric
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.Id
;
import
javax.persistence.Index
;
import
javax.persistence.JoinColumn
;
import
javax.persistence.ManyToOne
;
import
javax.persistence.Table
;
/**
* A single measurement, but with an assigned location.
*
* @author Bjoern Richerzhagen
*/
@Entity
@Table
(
name
=
"measurements_spatial"
,
indexes
=
{
@Index
(
columnList
=
"time"
,
name
=
"time"
),
@Index
(
columnList
=
"hostMetricId"
,
name
=
"hostMetricId"
)
})
public
class
MeasurementSpatial
{
/**
* A unique Id, will be set by the database
*/
@SuppressWarnings
(
"unused"
)
@Id
@GeneratedValue
()
private
int
id
;
/**
* The simulation time of this measurement
*/
@SuppressWarnings
(
"unused"
)
private
long
time
;
/**
* The value for this measurement
*/
@SuppressWarnings
(
"unused"
)
@Column
(
nullable
=
true
)
private
Double
value
;
@Column
(
nullable
=
true
,
name
=
"[locationX]"
)
private
Integer
locationX
;
@Column
(
nullable
=
true
,
name
=
"[locationY]"
)
private
Integer
locationY
;
/**
* The mapping Object of this measurement to the {@link Metric}-Object,
* which describes this metric.
*/
@SuppressWarnings
(
"unused"
)
@ManyToOne
@JoinColumn
(
name
=
"hostMetricId"
)
private
HostMetric
hostMetric
;
/**
* Creates a {@link MeasurementSingle}-Object with the given parameters. If
* value has the value infinity or NaN, then will be set this value to null.
*
* @param time
* The simulation time as date to this measurement
* @param value
* The value for this measurement
* @param statistic
* The reference to the {@link Metric}-Object, which describes
* this metric. Is used for the mapping.
*/
public
MeasurementSpatial
(
long
time
,
Double
value
,
HostMetric
hostMetric
,
Integer
locationX
,
Integer
locationY
)
{
super
();
this
.
time
=
time
;
this
.
hostMetric
=
hostMetric
;
// check for infinity or NaN
this
.
value
=
checkForSpecialNumbers
(
value
);
this
.
locationX
=
locationX
;
this
.
locationY
=
locationY
;
}
/**
* Check for special numbers, like infinity or NaN. If the given value is
* equals this numbers then will be return null, otherwise will be returned
* the given value.
*
* @param value
* The value, which should be checked.
* @return The value or null, if it is a special number.
*/
private
Double
checkForSpecialNumbers
(
Double
value
)
{
if
(
value
==
null
)
return
value
;
if
(
value
.
equals
(
Double
.
NEGATIVE_INFINITY
)
||
value
.
equals
(
Double
.
POSITIVE_INFINITY
)
||
value
.
equals
(
Double
.
NaN
))
{
return
null
;
}
else
{
return
value
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment