-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
ThresholdConfigParser.java
71 lines (63 loc) · 2.46 KB
/
ThresholdConfigParser.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
/*
* Copyright (c) 2002-2016 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j 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
* (at your option) 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 org.neo4j.kernel.impl.transaction.log.pruning;
import static org.neo4j.kernel.configuration.Settings.parseLongWithUnit;
public class ThresholdConfigParser
{
public static final class ThresholdConfigValue
{
public static final ThresholdConfigValue NO_PRUNING = new ThresholdConfigValue( "false", -1 );
public final String type;
public final long value;
public ThresholdConfigValue( String type, long value )
{
this.type = type;
this.value = value;
}
}
public static ThresholdConfigValue parse( String configValue )
{
String[] tokens = configValue.split( " " );
if ( tokens.length == 0 )
{
throw new IllegalArgumentException( "Invalid log pruning configuration value '" + configValue + "'" );
}
final String boolOrNumber = tokens[0];
if ( tokens.length == 1 )
{
switch ( boolOrNumber )
{
case "keep_all":
case "true":
return ThresholdConfigValue.NO_PRUNING;
case "keep_none":
case "false":
return new ThresholdConfigValue( "entries", 1 );
default:
throw new IllegalArgumentException( "Invalid log pruning configuration value '" + configValue +
"'. The form is 'all' or '<number><unit> <type>' for example '100k txs' " +
"for the latest 100 000 transactions" );
}
}
long thresholdValue = parseLongWithUnit( tokens[0] );
String thresholdType = tokens[1];
return new ThresholdConfigValue( thresholdType, thresholdValue );
}
}