fixing a bunch of inconsistencies and potential bugs as indicated by findbugs, pmd and eclipse
git-svn-id: http://google-refine.googlecode.com/svn/trunk@2301 7d457c2a-affb-35e4-300a-418c747d4874
This commit is contained in:
parent
df29c0b281
commit
1f67866258
@ -78,7 +78,7 @@ public class RefineServlet extends Butterfly {
|
|||||||
static final private Map<String, Command> commands = new HashMap<String, Command>();
|
static final private Map<String, Command> commands = new HashMap<String, Command>();
|
||||||
|
|
||||||
// timer for periodically saving projects
|
// timer for periodically saving projects
|
||||||
static private Timer _timer;
|
static private Timer _timer = new Timer("autosave");
|
||||||
|
|
||||||
static final Logger logger = LoggerFactory.getLogger("refine");
|
static final Logger logger = LoggerFactory.getLogger("refine");
|
||||||
|
|
||||||
@ -132,10 +132,7 @@ public class RefineServlet extends Butterfly {
|
|||||||
FileProjectManager.initialize(s_dataDir);
|
FileProjectManager.initialize(s_dataDir);
|
||||||
ImportingManager.initialize(this);
|
ImportingManager.initialize(this);
|
||||||
|
|
||||||
if (_timer == null) {
|
|
||||||
_timer = new Timer("autosave");
|
|
||||||
_timer.schedule(new AutoSaveTimerTask(), s_autoSavePeriod);
|
_timer.schedule(new AutoSaveTimerTask(), s_autoSavePeriod);
|
||||||
}
|
|
||||||
|
|
||||||
logger.trace("< initialize");
|
logger.trace("< initialize");
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,6 @@ public class ScatterplotDrawingRowVisitor implements RowVisitor, RecordVisitor {
|
|||||||
int col_y;
|
int col_y;
|
||||||
int dim_x;
|
int dim_x;
|
||||||
int dim_y;
|
int dim_y;
|
||||||
int rotation;
|
|
||||||
|
|
||||||
double l;
|
double l;
|
||||||
double dot;
|
double dot;
|
||||||
@ -84,7 +83,6 @@ public class ScatterplotDrawingRowVisitor implements RowVisitor, RecordVisitor {
|
|||||||
this.dot = dot;
|
this.dot = dot;
|
||||||
this.dim_x = dim_x;
|
this.dim_x = dim_x;
|
||||||
this.dim_y = dim_y;
|
this.dim_y = dim_y;
|
||||||
this.rotation = rotation;
|
|
||||||
|
|
||||||
l = size;
|
l = size;
|
||||||
r = ScatterplotFacet.createRotationMatrix(rotation, l);
|
r = ScatterplotFacet.createRotationMatrix(rotation, l);
|
||||||
|
@ -170,7 +170,7 @@ public class ExpressionTimeValueBinner implements RowVisitor, RecordVisitor {
|
|||||||
long t = ((Date) value).getTime();
|
long t = ((Date) value).getTime();
|
||||||
hasTime = true;
|
hasTime = true;
|
||||||
|
|
||||||
int bin = (int) Math.floor((t - _index.getMin()) / _index.getStep());
|
int bin = (int) Math.floor((double) (t - _index.getMin()) / (double) _index.getStep());
|
||||||
if (bin >= 0 && bin < bins.length) { // as a precaution
|
if (bin >= 0 && bin < bins.length) { // as a precaution
|
||||||
bins[bin]++;
|
bins[bin]++;
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ public class CsvExporter implements WriterExporter{
|
|||||||
public void export(Project project, Properties params, Engine engine, final Writer writer)
|
public void export(Project project, Properties params, Engine engine, final Writer writer)
|
||||||
throws IOException {
|
throws IOException {
|
||||||
|
|
||||||
String optionsString = params == null ? null : params.getProperty("options");
|
String optionsString = (params == null) ? null : params.getProperty("options");
|
||||||
JSONObject options = null;
|
JSONObject options = null;
|
||||||
if (optionsString != null) {
|
if (optionsString != null) {
|
||||||
try {
|
try {
|
||||||
@ -115,8 +115,7 @@ public class CsvExporter implements WriterExporter{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
CustomizableTabularExporterUtilities.exportRows(
|
CustomizableTabularExporterUtilities.exportRows(project, engine, params, serializer);
|
||||||
project, engine, params, serializer);
|
|
||||||
|
|
||||||
csvWriter.close();
|
csvWriter.close();
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ abstract public class CustomizableTabularExporterUtilities {
|
|||||||
Properties params,
|
Properties params,
|
||||||
final TabularSerializer serializer) {
|
final TabularSerializer serializer) {
|
||||||
|
|
||||||
String optionsString = params.getProperty("options");
|
String optionsString = (params != null) ? params.getProperty("options") : null;
|
||||||
JSONObject optionsTemp = null;
|
JSONObject optionsTemp = null;
|
||||||
if (optionsString != null) {
|
if (optionsString != null) {
|
||||||
try {
|
try {
|
||||||
|
@ -50,7 +50,8 @@ import com.google.refine.model.Project;
|
|||||||
import com.google.refine.model.Row;
|
import com.google.refine.model.Row;
|
||||||
|
|
||||||
public class ExpressionUtils {
|
public class ExpressionUtils {
|
||||||
static protected Set<Binder> s_binders = new HashSet<Binder>();
|
|
||||||
|
static final protected Set<Binder> s_binders = new HashSet<Binder>();
|
||||||
|
|
||||||
static public void registerBinder(Binder binder) {
|
static public void registerBinder(Binder binder) {
|
||||||
s_binders.add(binder);
|
s_binders.add(binder);
|
||||||
|
@ -44,6 +44,7 @@ import clojure.lang.IFn;
|
|||||||
import com.google.refine.grel.Parser;
|
import com.google.refine.grel.Parser;
|
||||||
|
|
||||||
abstract public class MetaParser {
|
abstract public class MetaParser {
|
||||||
|
|
||||||
static public class LanguageInfo {
|
static public class LanguageInfo {
|
||||||
final public String name;
|
final public String name;
|
||||||
final public LanguageSpecificParser parser;
|
final public LanguageSpecificParser parser;
|
||||||
@ -56,10 +57,9 @@ abstract public class MetaParser {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static protected Map<String, LanguageInfo> s_languages;
|
static final protected Map<String, LanguageInfo> s_languages = new HashMap<String, LanguageInfo>();
|
||||||
static {
|
|
||||||
s_languages = new HashMap<String, LanguageInfo>();
|
|
||||||
|
|
||||||
|
static {
|
||||||
registerLanguageParser("grel", "Google Refine Expression Language (GREL)", new LanguageSpecificParser() {
|
registerLanguageParser("grel", "Google Refine Expression Language (GREL)", new LanguageSpecificParser() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -103,7 +103,7 @@ public class Get implements Function {
|
|||||||
return ExpressionUtils.toObjectList(v).get(start);
|
return ExpressionUtils.toObjectList(v).get(start);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
int end = (to != null) ? ((Number) to).intValue() : length;
|
int end = ((Number) to).intValue();
|
||||||
|
|
||||||
if (end < 0) {
|
if (end < 0) {
|
||||||
end = length + end;
|
end = length + end;
|
||||||
|
@ -56,10 +56,10 @@ public class Combin implements Function {
|
|||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects the second argument to be a number");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects the second argument to be a number");
|
||||||
}
|
}
|
||||||
|
|
||||||
return Combin.Combination(((Number) args[0]).intValue(), ((Number) args[1]).intValue());
|
return Combin.combination(((Number) args[0]).intValue(), ((Number) args[1]).intValue());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int Combination(int n, int k){
|
public static int combination(int n, int k){
|
||||||
if (k > n) {
|
if (k > n) {
|
||||||
throw new IllegalArgumentException ("the number of elements, n, should be larger than the number of combinations, k");
|
throw new IllegalArgumentException ("the number of elements, n, should be larger than the number of combinations, k");
|
||||||
}
|
}
|
||||||
|
@ -47,12 +47,12 @@ public class Even implements Function {
|
|||||||
@Override
|
@Override
|
||||||
public Object call(Properties bindings, Object[] args) {
|
public Object call(Properties bindings, Object[] args) {
|
||||||
if (args.length == 1 && args[0] != null && args[0] instanceof Number) {
|
if (args.length == 1 && args[0] != null && args[0] instanceof Number) {
|
||||||
return Even.RoundUpToEven(((Number) args[0]).doubleValue());
|
return Even.roundUpToEven(((Number) args[0]).doubleValue());
|
||||||
}
|
}
|
||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects a number");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects a number");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double RoundUpToEven(double d){
|
public static double roundUpToEven(double d){
|
||||||
double temp = Math.ceil(d);
|
double temp = Math.ceil(d);
|
||||||
return ((temp % 2) == 0) ? temp : temp+1;
|
return ((temp % 2) == 0) ? temp : temp+1;
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class FactN implements Function {
|
|||||||
if (args[0] == null || !(args[0] instanceof Number)) {
|
if (args[0] == null || !(args[0] instanceof Number)) {
|
||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects the first parameter to be a number");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects the first parameter to be a number");
|
||||||
}
|
}
|
||||||
if(args[1] == null && !(args[1] instanceof Number)) {
|
if (args[1] == null || !(args[1] instanceof Number)) {
|
||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects the second parameter to be a number");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects the second parameter to be a number");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -52,7 +52,7 @@ public class Multinomial implements Function {
|
|||||||
int sum = 0;
|
int sum = 0;
|
||||||
int product = 1;
|
int product = 1;
|
||||||
for (int i = 0; i < args.length; i++){
|
for (int i = 0; i < args.length; i++){
|
||||||
if(args[i] == null && !(args[i] instanceof Number)) {
|
if (args[i] == null || !(args[i] instanceof Number)) {
|
||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects parameter " + (i + 1) + " to be a number");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects parameter " + (i + 1) + " to be a number");
|
||||||
}
|
}
|
||||||
int num = ((Number) args[i]).intValue();
|
int num = ((Number) args[i]).intValue();
|
||||||
|
@ -47,12 +47,12 @@ public class Odd implements Function {
|
|||||||
@Override
|
@Override
|
||||||
public Object call(Properties bindings, Object[] args) {
|
public Object call(Properties bindings, Object[] args) {
|
||||||
if (args.length == 1 && args[0] != null && args[0] instanceof Number) {
|
if (args.length == 1 && args[0] != null && args[0] instanceof Number) {
|
||||||
return Odd.RoundUpToOdd(((Number) args[0]).doubleValue());
|
return Odd.roundUpToOdd(((Number) args[0]).doubleValue());
|
||||||
}
|
}
|
||||||
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects a number");
|
return new EvalError(ControlFunctionRegistry.getFunctionName(this) + " expects a number");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static double RoundUpToOdd(double d){
|
public static double roundUpToOdd(double d){
|
||||||
double temp = Math.ceil(d);
|
double temp = Math.ceil(d);
|
||||||
return ((temp % 2) == 0) ? temp + 1 : temp;
|
return ((temp % 2) == 0) ? temp + 1 : temp;
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,8 @@ import com.google.refine.grel.ControlFunctionRegistry;
|
|||||||
import com.google.refine.grel.Function;
|
import com.google.refine.grel.Function;
|
||||||
|
|
||||||
public class SmartSplit implements Function {
|
public class SmartSplit implements Function {
|
||||||
static protected CSVParser s_tabParser = new CSVParser(
|
|
||||||
|
static final protected CSVParser s_tabParser = new CSVParser(
|
||||||
'\t',
|
'\t',
|
||||||
CSVParser.DEFAULT_QUOTE_CHARACTER,
|
CSVParser.DEFAULT_QUOTE_CHARACTER,
|
||||||
CSVParser.DEFAULT_ESCAPE_CHARACTER,
|
CSVParser.DEFAULT_ESCAPE_CHARACTER,
|
||||||
@ -54,7 +55,8 @@ public class SmartSplit implements Function {
|
|||||||
CSVParser.DEFAULT_IGNORE_LEADING_WHITESPACE,
|
CSVParser.DEFAULT_IGNORE_LEADING_WHITESPACE,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
static protected CSVParser s_commaParser = new CSVParser(
|
|
||||||
|
static final protected CSVParser s_commaParser = new CSVParser(
|
||||||
',',
|
',',
|
||||||
CSVParser.DEFAULT_QUOTE_CHARACTER,
|
CSVParser.DEFAULT_QUOTE_CHARACTER,
|
||||||
CSVParser.DEFAULT_ESCAPE_CHARACTER,
|
CSVParser.DEFAULT_ESCAPE_CHARACTER,
|
||||||
@ -62,6 +64,7 @@ public class SmartSplit implements Function {
|
|||||||
CSVParser.DEFAULT_IGNORE_LEADING_WHITESPACE,
|
CSVParser.DEFAULT_IGNORE_LEADING_WHITESPACE,
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Object call(Properties bindings, Object[] args) {
|
public Object call(Properties bindings, Object[] args) {
|
||||||
if (args.length >= 1 && args.length <= 2) {
|
if (args.length >= 1 && args.length <= 2) {
|
||||||
|
@ -154,10 +154,10 @@ public class FixedWidthImporter extends TabularImportingParserBase {
|
|||||||
static public int[] guessColumnWidths(File file, String encoding) {
|
static public int[] guessColumnWidths(File file, String encoding) {
|
||||||
try {
|
try {
|
||||||
InputStream is = new FileInputStream(file);
|
InputStream is = new FileInputStream(file);
|
||||||
try {
|
Reader reader = (encoding != null) ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
|
||||||
Reader reader = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
|
|
||||||
LineNumberReader lineNumberReader = new LineNumberReader(reader);
|
LineNumberReader lineNumberReader = new LineNumberReader(reader);
|
||||||
|
|
||||||
|
try {
|
||||||
int[] counts = null;
|
int[] counts = null;
|
||||||
int totalBytes = 0;
|
int totalBytes = 0;
|
||||||
int lineCount = 0;
|
int lineCount = 0;
|
||||||
@ -213,6 +213,8 @@ public class FixedWidthImporter extends TabularImportingParserBase {
|
|||||||
return widthA;
|
return widthA;
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
lineNumberReader.close();
|
||||||
|
reader.close();
|
||||||
is.close();
|
is.close();
|
||||||
}
|
}
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
@ -108,15 +108,12 @@ public class SeparatorBasedImporter extends TabularImportingParserBase {
|
|||||||
final LineNumberReader lnReader = new LineNumberReader(reader);
|
final LineNumberReader lnReader = new LineNumberReader(reader);
|
||||||
|
|
||||||
TableDataReader dataReader = new TableDataReader() {
|
TableDataReader dataReader = new TableDataReader() {
|
||||||
long bytesRead = 0;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Object> getNextRowOfCells() throws IOException {
|
public List<Object> getNextRowOfCells() throws IOException {
|
||||||
String line = lnReader.readLine();
|
String line = lnReader.readLine();
|
||||||
if (line == null) {
|
if (line == null) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
bytesRead += line.length();
|
|
||||||
return getCells(line, parser, lnReader);
|
return getCells(line, parser, lnReader);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -172,10 +169,10 @@ public class SeparatorBasedImporter extends TabularImportingParserBase {
|
|||||||
static public Separator guessSeparator(File file, String encoding) {
|
static public Separator guessSeparator(File file, String encoding) {
|
||||||
try {
|
try {
|
||||||
InputStream is = new FileInputStream(file);
|
InputStream is = new FileInputStream(file);
|
||||||
try {
|
|
||||||
Reader reader = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
|
Reader reader = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
|
||||||
LineNumberReader lineNumberReader = new LineNumberReader(reader);
|
LineNumberReader lineNumberReader = new LineNumberReader(reader);
|
||||||
|
|
||||||
|
try {
|
||||||
List<Separator> separators = new ArrayList<SeparatorBasedImporter.Separator>();
|
List<Separator> separators = new ArrayList<SeparatorBasedImporter.Separator>();
|
||||||
Map<Character, Separator> separatorMap = new HashMap<Character, SeparatorBasedImporter.Separator>();
|
Map<Character, Separator> separatorMap = new HashMap<Character, SeparatorBasedImporter.Separator>();
|
||||||
|
|
||||||
@ -236,6 +233,8 @@ public class SeparatorBasedImporter extends TabularImportingParserBase {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
lineNumberReader.close();
|
||||||
|
reader.close();
|
||||||
is.close();
|
is.close();
|
||||||
}
|
}
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
@ -16,9 +16,9 @@ public class TextFormatGuesser implements FormatGuesser {
|
|||||||
public String guess(File file, String encoding, String seedFormat) {
|
public String guess(File file, String encoding, String seedFormat) {
|
||||||
try {
|
try {
|
||||||
InputStream is = new FileInputStream(file);
|
InputStream is = new FileInputStream(file);
|
||||||
try {
|
|
||||||
Reader reader = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
|
Reader reader = encoding != null ? new InputStreamReader(is, encoding) : new InputStreamReader(is);
|
||||||
|
|
||||||
|
try {
|
||||||
int totalBytes = 0;
|
int totalBytes = 0;
|
||||||
int openBraces = 0;
|
int openBraces = 0;
|
||||||
int closeBraces = 0;
|
int closeBraces = 0;
|
||||||
@ -63,6 +63,7 @@ public class TextFormatGuesser implements FormatGuesser {
|
|||||||
}
|
}
|
||||||
return "text/line-based";
|
return "text/line-based";
|
||||||
} finally {
|
} finally {
|
||||||
|
reader.close();
|
||||||
is.close();
|
is.close();
|
||||||
}
|
}
|
||||||
} catch (UnsupportedEncodingException e) {
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
@ -40,8 +40,6 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import javax.servlet.ServletException;
|
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -163,26 +161,13 @@ public class XmlImportUtilities extends TreeImportUtilities {
|
|||||||
List<RecordElementCandidate> descendantCandidates = new ArrayList<RecordElementCandidate>();
|
List<RecordElementCandidate> descendantCandidates = new ArrayList<RecordElementCandidate>();
|
||||||
|
|
||||||
Map<String, Integer> immediateChildCandidateMap = new HashMap<String, Integer>();
|
Map<String, Integer> immediateChildCandidateMap = new HashMap<String, Integer>();
|
||||||
int textNodeCount = 0;
|
|
||||||
int childElementNodeCount = 0;
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
while (parser.hasNext()) {
|
while (parser.hasNext()) {
|
||||||
Token eventType = parser.next();
|
Token eventType = parser.next();
|
||||||
if (eventType == Token.EndEntity ) {
|
if (eventType == Token.EndEntity ) {
|
||||||
break;
|
break;
|
||||||
} else if (eventType == Token.Value) {
|
|
||||||
try{
|
|
||||||
if (parser.getFieldValue().trim().length() > 0) {
|
|
||||||
textNodeCount++;
|
|
||||||
}
|
|
||||||
}catch(TreeReaderException e){
|
|
||||||
e.printStackTrace();
|
|
||||||
//silent
|
|
||||||
}
|
|
||||||
} else if (eventType == Token.StartEntity) {
|
} else if (eventType == Token.StartEntity) {
|
||||||
childElementNodeCount++;
|
|
||||||
|
|
||||||
String tagName = parser.getFieldName();
|
String tagName = parser.getFieldName();
|
||||||
|
|
||||||
immediateChildCandidateMap.put(
|
immediateChildCandidateMap.put(
|
||||||
|
@ -169,7 +169,7 @@ public class ImportingManager {
|
|||||||
controller.init(servlet);
|
controller.init(servlet);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public File getImportDir() {
|
static synchronized public File getImportDir() {
|
||||||
if (importDir == null) {
|
if (importDir == null) {
|
||||||
File tempDir = servlet.getTempDir();
|
File tempDir = servlet.getTempDir();
|
||||||
importDir = tempDir == null ? new File(".import-temp") : new File(tempDir, "import");
|
importDir = tempDir == null ? new File(".import-temp") : new File(tempDir, "import");
|
||||||
|
@ -371,7 +371,7 @@ public class FileProjectManager extends ProjectManager {
|
|||||||
logger.warn("Error reading file", e);
|
logger.warn("Error reading file", e);
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
reader.close();
|
if (reader != null) reader.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
logger.warn("Exception closing file",e);
|
logger.warn("Exception closing file",e);
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ public class ColumnModel implements Jsonizable {
|
|||||||
this._maxCellIndex = Math.max(this._maxCellIndex, maxCellIndex);
|
this._maxCellIndex = Math.max(this._maxCellIndex, maxCellIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getMaxCellIndex() {
|
synchronized public int getMaxCellIndex() {
|
||||||
return _maxCellIndex;
|
return _maxCellIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,12 +78,12 @@ public class ColumnModel implements Jsonizable {
|
|||||||
return _maxCellIndex++;
|
return _maxCellIndex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setKeyColumnIndex(int keyColumnIndex) {
|
synchronized public void setKeyColumnIndex(int keyColumnIndex) {
|
||||||
// TODO: check validity of new cell index, e.g., it's not in any group
|
// TODO: check validity of new cell index, e.g., it's not in any group
|
||||||
this._keyColumnIndex = keyColumnIndex;
|
this._keyColumnIndex = keyColumnIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getKeyColumnIndex() {
|
synchronized public int getKeyColumnIndex() {
|
||||||
return _keyColumnIndex;
|
return _keyColumnIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -240,7 +240,7 @@ public class Row implements HasFields, Jsonizable {
|
|||||||
StringBuffer result = new StringBuffer();
|
StringBuffer result = new StringBuffer();
|
||||||
for (Cell cell : cells) {
|
for (Cell cell : cells) {
|
||||||
result.append(cell == null ? "null" : cell.toString());
|
result.append(cell == null ? "null" : cell.toString());
|
||||||
result.append(",");
|
result.append(',');
|
||||||
}
|
}
|
||||||
return result.toString();
|
return result.toString();
|
||||||
}
|
}
|
||||||
|
@ -46,9 +46,7 @@ import org.json.JSONWriter;
|
|||||||
|
|
||||||
import com.google.refine.Jsonizable;
|
import com.google.refine.Jsonizable;
|
||||||
|
|
||||||
|
|
||||||
public class TopList implements Jsonizable, Iterable<String> {
|
public class TopList implements Jsonizable, Iterable<String> {
|
||||||
private static final long serialVersionUID = 2666669643063493350L;
|
|
||||||
|
|
||||||
final protected int _top;
|
final protected int _top;
|
||||||
final protected List<String> _list = new ArrayList<String>();
|
final protected List<String> _list = new ArrayList<String>();
|
||||||
|
@ -49,10 +49,6 @@ import com.google.refine.model.Project;
|
|||||||
*/
|
*/
|
||||||
public class ProjectManagerStub extends ProjectManager {
|
public class ProjectManagerStub extends ProjectManager {
|
||||||
|
|
||||||
public ProjectManagerStub(){
|
|
||||||
super();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void deleteProject(long projectID) {
|
public void deleteProject(long projectID) {
|
||||||
// empty
|
// empty
|
||||||
|
Loading…
Reference in New Issue
Block a user