package krasa.grepconsole.grep.gui;
import com.google.common.base.Splitter;
import krasa.grepconsole.grep.CopyListenerModel;
import org.jetbrains.annotations.Nullable;
import java.util.List;
public class GrepOptionsItem {
int version = 0;
boolean wholeLine;
boolean regex;
boolean caseSensitive;
String expression;
public GrepOptionsItem setVersion(final int version) {
this.version = version;
return this;
}
public GrepOptionsItem setWholeLine(final boolean wholeLine) {
this.wholeLine = wholeLine;
return this;
}
public GrepOptionsItem setRegex(final boolean regex) {
this.regex = regex;
return this;
}
public GrepOptionsItem setCaseSensitive(final boolean caseSensitive) {
this.caseSensitive = caseSensitive;
return this;
}
public GrepOptionsItem setExpression(final String expression) {
this.expression = expression;
return this;
}
public int getVersion() {
return version;
}
public boolean isWholeLine() {
return wholeLine;
}
public boolean isRegex() {
return regex;
}
public boolean isCaseSensitive() {
return caseSensitive;
}
public String getExpression() {
return expression;
}
public String asString() {
return new StringBuilder()
.append(version).append("|")
.append(wholeLine).append("|")
.append(regex).append("|")
.append(caseSensitive).append("|")
.append(expression)
.toString();
}
public static GrepOptionsItem fromString(String s) {
List<String> strings = Splitter.on("|").limit(5).splitToList(s);
GrepOptionsItem grepOptionsItem = new GrepOptionsItem();
if (strings.size() == 5) {
grepOptionsItem.version = Integer.parseInt(strings.get(0));
grepOptionsItem.wholeLine = Boolean.parseBoolean(strings.get(1));
grepOptionsItem.regex = Boolean.parseBoolean(strings.get(2));
grepOptionsItem.caseSensitive = Boolean.parseBoolean(strings.get(3));
grepOptionsItem.expression = strings.get(4);
} else {
grepOptionsItem.expression = s;
}
return grepOptionsItem;
}
public static GrepOptionsItem from(CopyListenerModel copyListenerModel) {
GrepOptionsItem grepOptionsItem = new GrepOptionsItem();
grepOptionsItem.wholeLine = copyListenerModel.isWholeLine();
grepOptionsItem.regex = copyListenerModel.isRegex();
grepOptionsItem.caseSensitive = copyListenerModel.isCaseSensitive();
grepOptionsItem.expression = copyListenerModel.getExpression();
return grepOptionsItem;
}
public static GrepOptionsItem from(@Nullable GrepOptionsItem item) {
if (item == null) {
return new GrepOptionsItem();
}
GrepOptionsItem grepOptionsItem = new GrepOptionsItem();
grepOptionsItem.wholeLine = item.isWholeLine();
grepOptionsItem.regex = item.isRegex();
grepOptionsItem.caseSensitive = item.isCaseSensitive();
grepOptionsItem.expression = item.getExpression();
grepOptionsItem.version = item.getVersion();
return grepOptionsItem;
}
@Override
public String toString() {
return expression;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
GrepOptionsItem that = (GrepOptionsItem) o;
return expression != null ? expression.equals(that.expression) : that.expression == null;
}
@Override
public int hashCode() {
return expression != null ? expression.hashCode() : 0;
}
}