1 package fr.ifremer.tutti.caliper.feed.record;
2
3 /*
4 * #%L
5 * Tutti :: Ichtyometer API
6 * $Id:$
7 * $HeadURL:$
8 * %%
9 * Copyright (C) 2012 - 2014 Ifremer
10 * %%
11 * This program is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation, either version 3 of the
14 * License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public
22 * License along with this program. If not, see
23 * <http://www.gnu.org/licenses/gpl-3.0.html>.
24 * #L%
25 */
26
27 import org.apache.commons.lang3.builder.ToStringBuilder;
28
29 import java.util.regex.Matcher;
30 import java.util.regex.Pattern;
31
32 /**
33 * A measure record.
34 *
35 * Format is <pre>%l,v#</pre>.
36 *
37 * @author Kevin Morin (Code Lutin)
38 * @since 4.5
39 */
40 public class CaliperFeedReaderMeasureRecord extends CaliperFeedReaderRecordSupport {
41
42 private static final long serialVersionUID = 1L;
43
44 /** Received values are like +12,345\n */
45 private static final Pattern RECORD_PATTERN = Pattern.compile("\\+(\\w+),\\w+\\s*");
46
47 public static boolean acceptRecord(String record) {
48
49 Matcher matcher = RECORD_PATTERN.matcher(record);
50 return matcher.matches();
51
52 }
53
54 protected final int measure;
55
56 CaliperFeedReaderMeasureRecord(String record) {
57 super(record);
58 Matcher matcher = RECORD_PATTERN.matcher(record);
59 matcher.find();
60 String intPart = matcher.group(1);
61 measure = Integer.valueOf(intPart);
62 }
63
64 public int getMeasure() {
65 return measure;
66 }
67
68 @Override
69 public boolean isValid() {
70 return acceptRecord(record);
71 }
72
73 @Override
74 public String toString() {
75 return new ToStringBuilder(this)
76 .append("record", measure)
77 .append("measure", measure)
78 .toString();
79 }
80 }