Issue 630: Change branding from Google Refine to OpenRefine
** The first native Github commit (ie not one converted from SVN ** Change Google Refine to OpenRefine or just Refine. Change icon filenames and add some placeholder icons
This commit is contained in:
parent
03d997be8e
commit
0bd2104a16
File diff suppressed because one or more lines are too long
568
CHANGES.txt
568
CHANGES.txt
@ -1,284 +1,284 @@
|
||||
2.6 Release (TBD) - Maintenance release
|
||||
|
||||
Features:
|
||||
|
||||
- Issue 144: Use subdirectory for archives (tar, zip)
|
||||
- Issue 467: Provide feedback to user on JVM heap memory usage
|
||||
- Issue 524: Shorten name of anonymous JSON nodes in column names
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Issue 154: Can't import RDF/XML Data
|
||||
- Issue 226: Load into freebase: date objects are not converted into proper freebase dates
|
||||
- Issue 361: Headless operation on OS X leaves Dock icon bouncing
|
||||
- Issue 390: Latest POI fixes some import issues
|
||||
- Issue 432: cross() failing
|
||||
- Issue 436: Google refine don't start on debian squeeze
|
||||
- Issue 490: Unable to guess filetype is CSV when importing a simple CSV file
|
||||
- Issue 496: google-refine-2.5-rc2-r2379 failed to start if using refine.ini
|
||||
- Issue 515: "Open Project" page shows negative interval for "Last Modified"
|
||||
- Issue 517: Combin() function does not work as intended
|
||||
- Issue 521: Machine readable string (/type/rawstring) missing
|
||||
- Issue 523: Return all available HTTP error information on when Fetch URL fails
|
||||
- Issue 535: Refine fails to import Excel 2010 XLSX file with null hyperlinks
|
||||
- Issue 537: ToNumber should try to convert to integer first
|
||||
- Issue 541: Can't constrain a Freebase key query when using add column
|
||||
- Issue 542: ToDate should work on integers
|
||||
- Issue 543: Project creation from URL can't handle gzip Content-Encoding
|
||||
- Issue 544: FileNotFound exception when importing archive from URL
|
||||
- Issue 548: escape(value, encoding) returns "null" for non-string values
|
||||
- Issue 551: MQL preview missing "insert" clause
|
||||
- Issue 553: Upload Error - Not a directory
|
||||
- Issue 554: Format guesser ranking isn't working correctly in some cases
|
||||
- Issue 558: 'refine windows_dist' does not work on MacOS Lion
|
||||
- Issue 559: Deadlock between autosave thread and history code
|
||||
- Issue 578: json import on create project deletes useful blank data from arrays
|
||||
- Issue 586: Only one parse date format is attempted from list in toDate(format1,format2)
|
||||
- Issue 594: Date diff function doesn't work for two Calendar objects
|
||||
- Issue 596: JSON importer should not deserialize nulls as the string "null"
|
||||
- Issue 597: Deselect all button on Custom Tabular Exporter dialog doesn't work
|
||||
- Issue 599: RDF/XML parser preview not wired up
|
||||
- Issue 601: Allow selection of root element on JSON import
|
||||
- Issue 604: The common transform “Trim leading and trailing whitespace” doesn’t trim non-breaking spaces
|
||||
|
||||
|
||||
2.5 Release (December 11, 2011)
|
||||
|
||||
Major changes:
|
||||
- Entirely new importer architecture and user interface for Create Project
|
||||
- New import/export formats: Google Fusion Tables, OpenOffice Calc,
|
||||
and fixed width (import only)
|
||||
|
||||
Features:
|
||||
|
||||
- Issue 131: Read multiple files in a directory
|
||||
- Issue 179: Progress feedback during upload
|
||||
- Issue 260: XML Importer silently fails if file doesn't meet its criteria
|
||||
- Issue 279: Add support for reading from non-public Google Spreadsheets docs
|
||||
- Issue 280: Spreadsheet/table importers should allow selection of sheet/table to import
|
||||
- Issue 281: Add sheet selection support to Google Spreadsheet importer
|
||||
- Issue 31: Maximum number of facet values should be configurable.
|
||||
- Issue 38: Fix the table header so that it's always visible when scrolling a long page
|
||||
- Issue 433: Usability: use HTML <label> (e.g., for checkboxes
|
||||
- Issue 447: Extend toTitlecase() function with support for char[] delimiters in Apache WordUtils
|
||||
- Issue 452: Importing using Clipboard function does not guess structure correctly for XML or JSON
|
||||
- Issue 483: Project custom metadata while importing
|
||||
- Issue 504: Allow "sort" keyword in constraint subquery for "Add from Freebase"
|
||||
- Issue 84: Add a cut and paste textbox importer
|
||||
- Issue 85: Fixed width column importer
|
||||
- Issue 88: Improve operation history robustness by fixing Json.
|
||||
- Issue 92: Add Columns From Freebase dialog should support constraints
|
||||
- Issue 97: Exporting CSV should allow for optional columns
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Issue 149: rows button stays strike-through when clicking on it
|
||||
- Issue 229: 'Ignore lines on import' bug when import from URL?
|
||||
- Issue 232: Stray characters before <?xml> (including blank lines) causes XML import to fail
|
||||
- Issue 233: 404 Error upon Launch
|
||||
- Issue 313: Excel export loses date cell format
|
||||
- Issue 314: Reconciliation (Freebase) of accented characters doesn't work
|
||||
- Issue 330: On Project creation - Unchecked Split Columns Box still splits by comma
|
||||
- Issue 366: Error when using Add column from Freebase on restored project
|
||||
- Issue 375: Importing data from Google spreadsheet via visualisation API query
|
||||
- Issue 378: Transform involving NaN causes crash
|
||||
- Issue 383: Updating Preview hangs on 2.5 branch when checking Load at most...
|
||||
- Issue 410: Convert line-endings to DOS format
|
||||
- Issue 419: Values with Characters like é split across several lines
|
||||
- Issue 424: Duplicate column names don't allow user to recover
|
||||
- Issue 426: filter with custom facet adds zero lines choice
|
||||
- Issue 428: Excel import sometimes drops last row of data
|
||||
- Issue 430: Timeline Facet not working
|
||||
- Issue 435: refine sh script only checks for java 1.6, not > 1.6
|
||||
- Issue 440: Fetch URLs aborts while saving/loading/computing facets
|
||||
- Issue 441: onError - "keep-original" / "store-blank" working oddly for value.toDate()
|
||||
- Issue 442: Two column transforms to date on the same column turns the cells blank
|
||||
- Issue 449: Uncaught exception from Excel importer
|
||||
- Issue 450: Parse error uploading to Fusion Table
|
||||
- Issue 454: Reselect Files after Configuring Parsing Options does not allow Select
|
||||
- Issue 459: Undefined error with some CSV files (incorrectly detected as EXCEL)
|
||||
- Issue 462: Don't trim whitespace in Excel importer
|
||||
- Issue 465: Data text file with extension .dta within a .ZIP is not automatically extracted
|
||||
- Issue 473: Cancel button doesn't work during project creation
|
||||
- Issue 474: XML importer ignores record limit
|
||||
- Issue 475: New Importer does not accept special separator characters completely such as Unicode chars
|
||||
- Issue 477: Implement or remove the line separator option
|
||||
- Issue 487: Transform -> To Date doesn't support ISO 8601 date parsing
|
||||
- Issue 488: ISO 8601 dates not supported in cell editing - cell-ui.js
|
||||
- Issue 489: Custom Exporter no longer behaves as expected with line & field separators
|
||||
- Issue 491: Importing Excel files - blank columns and time formatting
|
||||
- Issue 492: Table header cells misaligning with table cells
|
||||
- Issue 502: Fetch URLs does not return the exact HTTP payload, like Create Project from URLs does.
|
||||
- Issue 513: No more Json Tokens in stream ERROR
|
||||
|
||||
|
||||
2.1 Release (July 10, 2011) - Maintenance release
|
||||
|
||||
Features:
|
||||
|
||||
- Issue 157: Google Spreadsheet import/export plugin integrated
|
||||
- Issue 220: HTML parsing functions added to GREL (using Jsoup)
|
||||
- Issue 222: Added the ability to save favorite transforms
|
||||
- Issue 224: added ABS math function
|
||||
- Issue 349: Clustering not finding duplicates when facet is showing groupings
|
||||
- Issue 399: Added Cologne Phonetic clustering for German names
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Issue 102: Process-Panel div sometimes disappears in Google Chrome
|
||||
- Issue 107: Reconciliation options not showing international characters correctly
|
||||
- Issue 143: Windows refine.bat file gives NoClassDefFoundError
|
||||
- Issue 163: Refine doesn't retain the characters for flat or sharp
|
||||
- Issue 172: inconsistencies in encoding guessing during load
|
||||
- Issue 184: Support formatting dates into strings
|
||||
- Issue 185: same reconciliation candidate for two cells seems to be overridden
|
||||
- Issue 187: Linux start instruction incorrect
|
||||
- Issue 188: ArrayIndexOutOfBoundsException when importing excel file
|
||||
- Issue 196: failure and error dialog attempting to remove columns
|
||||
- Issue 197: New project was modified "0 years ago"
|
||||
- Issue 202: Sort text with accents
|
||||
- Issue 203: Please add TextPipe to Related Software page
|
||||
- Issue 227: Documentation states extensions are mounted at /extensions, but they are really mounted at /extension.
|
||||
- Issue 228: Import .zip archive fails
|
||||
- Issue 237: reinterpret() no longer seems to work as expected
|
||||
- Issue 258: JAVA_HOME ignored if "which java" returns nonzero
|
||||
- Issue 262: Refine does not start
|
||||
- Issue 263: & symbol being parsed in url's in xml
|
||||
- Issue 276: strange character while create new project with a chinese poject name
|
||||
- Issue 294: Exporting date type column to TSV/CSV shows java debugging information instead of value
|
||||
- Issue 295: Binaries under 'root' user on *nix
|
||||
- Issue 304: CsvExporter tests fail after commit for issue 294
|
||||
- Issue 311: "Ignore" and "Skip" fields in the "Create a New Project" form have the same input[name]
|
||||
- Issue 312: toString(date_val, 'yyyy-MM-dd') doesn't seem to work
|
||||
- Issue 325: Refine cannot load data from URL when run behind Proxy Server
|
||||
- Issue 328: Don't retry failed key-based reconciliations
|
||||
- Issue 334: Fusion Tables CSV import produces NullPointerException
|
||||
- Issue 351: Error 500 STREAM on Excel export
|
||||
- Issue 355: Broken images for SchemaAlignment page
|
||||
- Issue 358: org.json.JSONException: JSON does not allow non-finite numbers.
|
||||
- Issue 364: Build is broken
|
||||
- Issue 374: Problems with date functions INC
|
||||
- Issue 391: Patch to refine.{bat,ini}
|
||||
- Issue 401: Error in exception handling for ExportRows command
|
||||
- Issue 404: Intermittent charset detection failure
|
||||
- Issue 415: Evaluation precedence wrong for arithmetic expressions
|
||||
- Issue 61: multiple rows per column from 1 xml element
|
||||
|
||||
|
||||
2.0 Release (November 10, 2010 - first release as Google Refine)
|
||||
|
||||
Major Changes:
|
||||
- New extension architecture.
|
||||
- Generalized reconciliation framework that allows plugging in standard reconciliation services.
|
||||
- Support for QA on data loads into Freebase.
|
||||
- Timeline Facet (Issue 40 and 95)
|
||||
|
||||
Features:
|
||||
- New commands:
|
||||
- Fill Down
|
||||
- Blank Down
|
||||
- Transpose Cells in Columns into Rows
|
||||
- Transpose Cells in Rows into Columns (Issue 82)
|
||||
- Move Column to Beginning, Move Column to End, Move Column Left, Move Column Right, Reorder Columns
|
||||
- Add Column by Fetching URLs
|
||||
- Recon commands:
|
||||
- Clear recon data for all matching rows
|
||||
- Clear recon data for one cell
|
||||
- Clear recon data for similar cells
|
||||
- Copy recon judgments across columns
|
||||
- GREL:
|
||||
- JSON support
|
||||
- New functions: smartSplit, escape, parseJson, hasField, uniques
|
||||
- New controls: forEachIndex, forRange, filter
|
||||
- New parameters:
|
||||
- preserveAllTokens on split function
|
||||
- Regexp groups capturing GEL function
|
||||
- Importers
|
||||
- New: RDF exporter (as extension)
|
||||
- New: Json importer
|
||||
- CSV and TSV importers: added support for ignoring quotation marks
|
||||
- Added support for creating a project by pointing to a data file URL.
|
||||
- Text facet's choice count limit is now configurable through preference page
|
||||
- Select All and Unselect All buttons in History Extract dialog
|
||||
- Schema skeleton: support for multiple cells per cell-as nodes, and for conditional links
|
||||
- Optionally convert strings to numbers during split columns operation
|
||||
|
||||
Fixes:
|
||||
- TSV/CSV exporter bug: Gridworks crashed when there were empty cells.
|
||||
- Issue 29: Delivered "Collapse whitespace" transformation does not work
|
||||
- Issue 57: Schema skeleton disappears
|
||||
- Issue 66: Records not excluded with inverted text facet
|
||||
- Issue 69: ControlFunctionRegistry now correctly registers Chomp expression as "chomp" key.
|
||||
- Issue 99: Diff for dates fails with "unknown error" always
|
||||
- Issue 110: Import of single column text file with Postal Codes shows only 1 row with lots of <20> chars (?)
|
||||
- Issue 113: Export filtered rows as tsv or csv fails; html and excel OK
|
||||
- Issue 115: datePart(value,"month") gives zero-based month numbers
|
||||
- Issue 116: CSV/TSV export data includes blank fields for deleted columns
|
||||
- Issue 121: Importing attached file strips backslashes
|
||||
- Issue 122: Exporting to Excel on attached project raises server exception
|
||||
- Issue 125: jsonize not serializing arrays
|
||||
- Issue 126: Large integers formatted in scientific notation in formulas
|
||||
- Issue 127: Add column from Freebase raises exception
|
||||
- Issue 135: Hangs when setting cell value to large JSON string
|
||||
- Issue 138: Numbers should be right-justified
|
||||
- Issue 140: Fix Open Workspace Directory command to work on Windows and Linux
|
||||
- Issue 146: In "Cluster and Edit Column", clicking on entry value to set "Merge?" checkbox does not reflect the final value of operation
|
||||
- Issue 155: Blank browser shown when non-GZIP format is detected during import
|
||||
- Issue 160: Cancel button on Search for Match dialog sometimes not working
|
||||
- Issue 161: Authorize error when trying to Sign In before loading to Freebase
|
||||
- Issue 166: Expression Editor dialog needs UI cleanup on long expressions
|
||||
|
||||
|
||||
1.1 Release (May 27, 2010)
|
||||
|
||||
Features:
|
||||
- Row/record sorting (Issue 32)
|
||||
- CSV exporter (Issue 59)
|
||||
- Mqlwrite exporter
|
||||
- Templating exporter (experimental)
|
||||
|
||||
Fixes:
|
||||
- Issue 34: "Behavior of Text Filter is unpredictable when "regular expression" mode is enabled."
|
||||
Regex was not compiled with case insensitivity flag.
|
||||
- Issue 4: "Match All bug with ZIP code". Numeric values in cells were not stringified first
|
||||
before comparison.
|
||||
- Issue 41: "Envelope quotation marks are removed by CSV importer"
|
||||
- Issue 19: "CSV import is too basic"
|
||||
- Issue 15: "Ability to rename projects"
|
||||
- Issue 16: "Column name collision when adding data from Freebase"
|
||||
- Issue 28: "mql-like preview is not properly unquoting numbers"
|
||||
- Issue 45: "Renaming Cells with Ctrl-Enter produced ERROR"
|
||||
Tentative fix for a concurrent bug.
|
||||
- Issue 46: "Array literals in GEL"
|
||||
- Issue 55: "Use stable sorting for text facets sorted by count"
|
||||
- Issue 53: "Moving the cursor inside the Text Filter box by clicking"
|
||||
- Issue 58: "Meta facet"
|
||||
Supported by the function facetCount()
|
||||
- Issue 14: "Limiting Freebase load to starred records"
|
||||
We load whatever rows that are filtered through, not particularly starred rows.
|
||||
- Issue 49: "Add Edit Cells / Set Null"
|
||||
- Issue 30: "Transform dialog should remember preferred language."
|
||||
- Issue 62: "It'd be nice if URIs were hyperlinked in the data cells"
|
||||
|
||||
Other Changes:
|
||||
- Moved unit tests from JUnit to TestNG
|
||||
|
||||
|
||||
1.0.1 Release (May 12, 2010)
|
||||
|
||||
Fixes:
|
||||
- Issue 2: "Undo History bug" - bulk row starring and flagging operations could not be undone.
|
||||
- Issue 5: "Localized Windows cause save problems for Gridworks" -
|
||||
Windows user IDs that contain unicode characters were not retrieved correctly.
|
||||
- Issue 10: "OAuth fails on sign in" - due to clock offset.
|
||||
- Issue 11: "missing "lang" attribute in MQL generated in schema alignment"
|
||||
- Issue 13: "float rejected from sandbox upload as Json object" - everything was sent as a string.
|
||||
- Issue 17: "Conflated triples - all rows are producing triple with "s" :" $Name_0"" -
|
||||
The Create A New Topic for Each Cell command created shared recon objects.
|
||||
- Issue 18: "Error converting russian characters during edit of single cell"
|
||||
- [partial fix] Issue 19: "CSV import is too basic" - fixed for CSV, not for TSV
|
||||
|
||||
1.0 Release (May 10, 2010)
|
||||
|
||||
First Public Release as Freebase Gridworks
|
||||
|
||||
2.6 Release (TBD) - First release as OpenRefine - Maintenance release
|
||||
|
||||
Features:
|
||||
|
||||
- Issue 144: Use subdirectory for archives (tar, zip)
|
||||
- Issue 467: Provide feedback to user on JVM heap memory usage
|
||||
- Issue 524: Shorten name of anonymous JSON nodes in column names
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Issue 154: Can't import RDF/XML Data
|
||||
- Issue 226: Load into freebase: date objects are not converted into proper freebase dates
|
||||
- Issue 361: Headless operation on OS X leaves Dock icon bouncing
|
||||
- Issue 390: Latest POI fixes some import issues
|
||||
- Issue 432: cross() failing
|
||||
- Issue 436: Google refine don't start on debian squeeze
|
||||
- Issue 490: Unable to guess filetype is CSV when importing a simple CSV file
|
||||
- Issue 496: google-refine-2.5-rc2-r2379 failed to start if using refine.ini
|
||||
- Issue 515: "Open Project" page shows negative interval for "Last Modified"
|
||||
- Issue 517: Combin() function does not work as intended
|
||||
- Issue 521: Machine readable string (/type/rawstring) missing
|
||||
- Issue 523: Return all available HTTP error information on when Fetch URL fails
|
||||
- Issue 535: Refine fails to import Excel 2010 XLSX file with null hyperlinks
|
||||
- Issue 537: ToNumber should try to convert to integer first
|
||||
- Issue 541: Can't constrain a Freebase key query when using add column
|
||||
- Issue 542: ToDate should work on integers
|
||||
- Issue 543: Project creation from URL can't handle gzip Content-Encoding
|
||||
- Issue 544: FileNotFound exception when importing archive from URL
|
||||
- Issue 548: escape(value, encoding) returns "null" for non-string values
|
||||
- Issue 551: MQL preview missing "insert" clause
|
||||
- Issue 553: Upload Error - Not a directory
|
||||
- Issue 554: Format guesser ranking isn't working correctly in some cases
|
||||
- Issue 558: 'refine windows_dist' does not work on MacOS Lion
|
||||
- Issue 559: Deadlock between autosave thread and history code
|
||||
- Issue 578: json import on create project deletes useful blank data from arrays
|
||||
- Issue 586: Only one parse date format is attempted from list in toDate(format1,format2)
|
||||
- Issue 594: Date diff function doesn't work for two Calendar objects
|
||||
- Issue 596: JSON importer should not deserialize nulls as the string "null"
|
||||
- Issue 597: Deselect all button on Custom Tabular Exporter dialog doesn't work
|
||||
- Issue 599: RDF/XML parser preview not wired up
|
||||
- Issue 601: Allow selection of root element on JSON import
|
||||
- Issue 604: The common transform “Trim leading and trailing whitespace” doesn’t trim non-breaking spaces
|
||||
|
||||
|
||||
2.5 Release (December 11, 2011)
|
||||
|
||||
Major changes:
|
||||
- Entirely new importer architecture and user interface for Create Project
|
||||
- New import/export formats: Google Fusion Tables, OpenOffice Calc,
|
||||
and fixed width (import only)
|
||||
|
||||
Features:
|
||||
|
||||
- Issue 131: Read multiple files in a directory
|
||||
- Issue 179: Progress feedback during upload
|
||||
- Issue 260: XML Importer silently fails if file doesn't meet its criteria
|
||||
- Issue 279: Add support for reading from non-public Google Spreadsheets docs
|
||||
- Issue 280: Spreadsheet/table importers should allow selection of sheet/table to import
|
||||
- Issue 281: Add sheet selection support to Google Spreadsheet importer
|
||||
- Issue 31: Maximum number of facet values should be configurable.
|
||||
- Issue 38: Fix the table header so that it's always visible when scrolling a long page
|
||||
- Issue 433: Usability: use HTML <label> (e.g., for checkboxes
|
||||
- Issue 447: Extend toTitlecase() function with support for char[] delimiters in Apache WordUtils
|
||||
- Issue 452: Importing using Clipboard function does not guess structure correctly for XML or JSON
|
||||
- Issue 483: Project custom metadata while importing
|
||||
- Issue 504: Allow "sort" keyword in constraint subquery for "Add from Freebase"
|
||||
- Issue 84: Add a cut and paste textbox importer
|
||||
- Issue 85: Fixed width column importer
|
||||
- Issue 88: Improve operation history robustness by fixing Json.
|
||||
- Issue 92: Add Columns From Freebase dialog should support constraints
|
||||
- Issue 97: Exporting CSV should allow for optional columns
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Issue 149: rows button stays strike-through when clicking on it
|
||||
- Issue 229: 'Ignore lines on import' bug when import from URL?
|
||||
- Issue 232: Stray characters before <?xml> (including blank lines) causes XML import to fail
|
||||
- Issue 233: 404 Error upon Launch
|
||||
- Issue 313: Excel export loses date cell format
|
||||
- Issue 314: Reconciliation (Freebase) of accented characters doesn't work
|
||||
- Issue 330: On Project creation - Unchecked Split Columns Box still splits by comma
|
||||
- Issue 366: Error when using Add column from Freebase on restored project
|
||||
- Issue 375: Importing data from Google spreadsheet via visualisation API query
|
||||
- Issue 378: Transform involving NaN causes crash
|
||||
- Issue 383: Updating Preview hangs on 2.5 branch when checking Load at most...
|
||||
- Issue 410: Convert line-endings to DOS format
|
||||
- Issue 419: Values with Characters like é split across several lines
|
||||
- Issue 424: Duplicate column names don't allow user to recover
|
||||
- Issue 426: filter with custom facet adds zero lines choice
|
||||
- Issue 428: Excel import sometimes drops last row of data
|
||||
- Issue 430: Timeline Facet not working
|
||||
- Issue 435: refine sh script only checks for java 1.6, not > 1.6
|
||||
- Issue 440: Fetch URLs aborts while saving/loading/computing facets
|
||||
- Issue 441: onError - "keep-original" / "store-blank" working oddly for value.toDate()
|
||||
- Issue 442: Two column transforms to date on the same column turns the cells blank
|
||||
- Issue 449: Uncaught exception from Excel importer
|
||||
- Issue 450: Parse error uploading to Fusion Table
|
||||
- Issue 454: Reselect Files after Configuring Parsing Options does not allow Select
|
||||
- Issue 459: Undefined error with some CSV files (incorrectly detected as EXCEL)
|
||||
- Issue 462: Don't trim whitespace in Excel importer
|
||||
- Issue 465: Data text file with extension .dta within a .ZIP is not automatically extracted
|
||||
- Issue 473: Cancel button doesn't work during project creation
|
||||
- Issue 474: XML importer ignores record limit
|
||||
- Issue 475: New Importer does not accept special separator characters completely such as Unicode chars
|
||||
- Issue 477: Implement or remove the line separator option
|
||||
- Issue 487: Transform -> To Date doesn't support ISO 8601 date parsing
|
||||
- Issue 488: ISO 8601 dates not supported in cell editing - cell-ui.js
|
||||
- Issue 489: Custom Exporter no longer behaves as expected with line & field separators
|
||||
- Issue 491: Importing Excel files - blank columns and time formatting
|
||||
- Issue 492: Table header cells misaligning with table cells
|
||||
- Issue 502: Fetch URLs does not return the exact HTTP payload, like Create Project from URLs does.
|
||||
- Issue 513: No more Json Tokens in stream ERROR
|
||||
|
||||
|
||||
2.1 Release (July 10, 2011) - Maintenance release
|
||||
|
||||
Features:
|
||||
|
||||
- Issue 157: Google Spreadsheet import/export plugin integrated
|
||||
- Issue 220: HTML parsing functions added to GREL (using Jsoup)
|
||||
- Issue 222: Added the ability to save favorite transforms
|
||||
- Issue 224: added ABS math function
|
||||
- Issue 349: Clustering not finding duplicates when facet is showing groupings
|
||||
- Issue 399: Added Cologne Phonetic clustering for German names
|
||||
|
||||
Bugs fixed:
|
||||
|
||||
- Issue 102: Process-Panel div sometimes disappears in Google Chrome
|
||||
- Issue 107: Reconciliation options not showing international characters correctly
|
||||
- Issue 143: Windows refine.bat file gives NoClassDefFoundError
|
||||
- Issue 163: Refine doesn't retain the characters for flat or sharp
|
||||
- Issue 172: inconsistencies in encoding guessing during load
|
||||
- Issue 184: Support formatting dates into strings
|
||||
- Issue 185: same reconciliation candidate for two cells seems to be overridden
|
||||
- Issue 187: Linux start instruction incorrect
|
||||
- Issue 188: ArrayIndexOutOfBoundsException when importing excel file
|
||||
- Issue 196: failure and error dialog attempting to remove columns
|
||||
- Issue 197: New project was modified "0 years ago"
|
||||
- Issue 202: Sort text with accents
|
||||
- Issue 203: Please add TextPipe to Related Software page
|
||||
- Issue 227: Documentation states extensions are mounted at /extensions, but they are really mounted at /extension.
|
||||
- Issue 228: Import .zip archive fails
|
||||
- Issue 237: reinterpret() no longer seems to work as expected
|
||||
- Issue 258: JAVA_HOME ignored if "which java" returns nonzero
|
||||
- Issue 262: Refine does not start
|
||||
- Issue 263: & symbol being parsed in url's in xml
|
||||
- Issue 276: strange character while create new project with a chinese poject name
|
||||
- Issue 294: Exporting date type column to TSV/CSV shows java debugging information instead of value
|
||||
- Issue 295: Binaries under 'root' user on *nix
|
||||
- Issue 304: CsvExporter tests fail after commit for issue 294
|
||||
- Issue 311: "Ignore" and "Skip" fields in the "Create a New Project" form have the same input[name]
|
||||
- Issue 312: toString(date_val, 'yyyy-MM-dd') doesn't seem to work
|
||||
- Issue 325: Refine cannot load data from URL when run behind Proxy Server
|
||||
- Issue 328: Don't retry failed key-based reconciliations
|
||||
- Issue 334: Fusion Tables CSV import produces NullPointerException
|
||||
- Issue 351: Error 500 STREAM on Excel export
|
||||
- Issue 355: Broken images for SchemaAlignment page
|
||||
- Issue 358: org.json.JSONException: JSON does not allow non-finite numbers.
|
||||
- Issue 364: Build is broken
|
||||
- Issue 374: Problems with date functions INC
|
||||
- Issue 391: Patch to refine.{bat,ini}
|
||||
- Issue 401: Error in exception handling for ExportRows command
|
||||
- Issue 404: Intermittent charset detection failure
|
||||
- Issue 415: Evaluation precedence wrong for arithmetic expressions
|
||||
- Issue 61: multiple rows per column from 1 xml element
|
||||
|
||||
|
||||
2.0 Release (November 10, 2010 - first release as Google Refine)
|
||||
|
||||
Major Changes:
|
||||
- New extension architecture.
|
||||
- Generalized reconciliation framework that allows plugging in standard reconciliation services.
|
||||
- Support for QA on data loads into Freebase.
|
||||
- Timeline Facet (Issue 40 and 95)
|
||||
|
||||
Features:
|
||||
- New commands:
|
||||
- Fill Down
|
||||
- Blank Down
|
||||
- Transpose Cells in Columns into Rows
|
||||
- Transpose Cells in Rows into Columns (Issue 82)
|
||||
- Move Column to Beginning, Move Column to End, Move Column Left, Move Column Right, Reorder Columns
|
||||
- Add Column by Fetching URLs
|
||||
- Recon commands:
|
||||
- Clear recon data for all matching rows
|
||||
- Clear recon data for one cell
|
||||
- Clear recon data for similar cells
|
||||
- Copy recon judgments across columns
|
||||
- GREL:
|
||||
- JSON support
|
||||
- New functions: smartSplit, escape, parseJson, hasField, uniques
|
||||
- New controls: forEachIndex, forRange, filter
|
||||
- New parameters:
|
||||
- preserveAllTokens on split function
|
||||
- Regexp groups capturing GEL function
|
||||
- Importers
|
||||
- New: RDF exporter (as extension)
|
||||
- New: Json importer
|
||||
- CSV and TSV importers: added support for ignoring quotation marks
|
||||
- Added support for creating a project by pointing to a data file URL.
|
||||
- Text facet's choice count limit is now configurable through preference page
|
||||
- Select All and Unselect All buttons in History Extract dialog
|
||||
- Schema skeleton: support for multiple cells per cell-as nodes, and for conditional links
|
||||
- Optionally convert strings to numbers during split columns operation
|
||||
|
||||
Fixes:
|
||||
- TSV/CSV exporter bug: Gridworks crashed when there were empty cells.
|
||||
- Issue 29: Delivered "Collapse whitespace" transformation does not work
|
||||
- Issue 57: Schema skeleton disappears
|
||||
- Issue 66: Records not excluded with inverted text facet
|
||||
- Issue 69: ControlFunctionRegistry now correctly registers Chomp expression as "chomp" key.
|
||||
- Issue 99: Diff for dates fails with "unknown error" always
|
||||
- Issue 110: Import of single column text file with Postal Codes shows only 1 row with lots of <20> chars (?)
|
||||
- Issue 113: Export filtered rows as tsv or csv fails; html and excel OK
|
||||
- Issue 115: datePart(value,"month") gives zero-based month numbers
|
||||
- Issue 116: CSV/TSV export data includes blank fields for deleted columns
|
||||
- Issue 121: Importing attached file strips backslashes
|
||||
- Issue 122: Exporting to Excel on attached project raises server exception
|
||||
- Issue 125: jsonize not serializing arrays
|
||||
- Issue 126: Large integers formatted in scientific notation in formulas
|
||||
- Issue 127: Add column from Freebase raises exception
|
||||
- Issue 135: Hangs when setting cell value to large JSON string
|
||||
- Issue 138: Numbers should be right-justified
|
||||
- Issue 140: Fix Open Workspace Directory command to work on Windows and Linux
|
||||
- Issue 146: In "Cluster and Edit Column", clicking on entry value to set "Merge?" checkbox does not reflect the final value of operation
|
||||
- Issue 155: Blank browser shown when non-GZIP format is detected during import
|
||||
- Issue 160: Cancel button on Search for Match dialog sometimes not working
|
||||
- Issue 161: Authorize error when trying to Sign In before loading to Freebase
|
||||
- Issue 166: Expression Editor dialog needs UI cleanup on long expressions
|
||||
|
||||
|
||||
1.1 Release (May 27, 2010)
|
||||
|
||||
Features:
|
||||
- Row/record sorting (Issue 32)
|
||||
- CSV exporter (Issue 59)
|
||||
- Mqlwrite exporter
|
||||
- Templating exporter (experimental)
|
||||
|
||||
Fixes:
|
||||
- Issue 34: "Behavior of Text Filter is unpredictable when "regular expression" mode is enabled."
|
||||
Regex was not compiled with case insensitivity flag.
|
||||
- Issue 4: "Match All bug with ZIP code". Numeric values in cells were not stringified first
|
||||
before comparison.
|
||||
- Issue 41: "Envelope quotation marks are removed by CSV importer"
|
||||
- Issue 19: "CSV import is too basic"
|
||||
- Issue 15: "Ability to rename projects"
|
||||
- Issue 16: "Column name collision when adding data from Freebase"
|
||||
- Issue 28: "mql-like preview is not properly unquoting numbers"
|
||||
- Issue 45: "Renaming Cells with Ctrl-Enter produced ERROR"
|
||||
Tentative fix for a concurrent bug.
|
||||
- Issue 46: "Array literals in GEL"
|
||||
- Issue 55: "Use stable sorting for text facets sorted by count"
|
||||
- Issue 53: "Moving the cursor inside the Text Filter box by clicking"
|
||||
- Issue 58: "Meta facet"
|
||||
Supported by the function facetCount()
|
||||
- Issue 14: "Limiting Freebase load to starred records"
|
||||
We load whatever rows that are filtered through, not particularly starred rows.
|
||||
- Issue 49: "Add Edit Cells / Set Null"
|
||||
- Issue 30: "Transform dialog should remember preferred language."
|
||||
- Issue 62: "It'd be nice if URIs were hyperlinked in the data cells"
|
||||
|
||||
Other Changes:
|
||||
- Moved unit tests from JUnit to TestNG
|
||||
|
||||
|
||||
1.0.1 Release (May 12, 2010)
|
||||
|
||||
Fixes:
|
||||
- Issue 2: "Undo History bug" - bulk row starring and flagging operations could not be undone.
|
||||
- Issue 5: "Localized Windows cause save problems for Gridworks" -
|
||||
Windows user IDs that contain unicode characters were not retrieved correctly.
|
||||
- Issue 10: "OAuth fails on sign in" - due to clock offset.
|
||||
- Issue 11: "missing "lang" attribute in MQL generated in schema alignment"
|
||||
- Issue 13: "float rejected from sandbox upload as Json object" - everything was sent as a string.
|
||||
- Issue 17: "Conflated triples - all rows are producing triple with "s" :" $Name_0"" -
|
||||
The Create A New Topic for Each Cell command created shared recon objects.
|
||||
- Issue 18: "Error converting russian characters during edit of single cell"
|
||||
- [partial fix] Issue 19: "CSV import is too basic" - fixed for CSV, not for TSV
|
||||
|
||||
1.0 Release (May 10, 2010)
|
||||
|
||||
First Public Release as Freebase Gridworks
|
||||
|
||||
|
@ -1,17 +1,17 @@
|
||||
|
||||
Google Refine for Eclipse
|
||||
OpenRefine for Eclipse
|
||||
-------------------------
|
||||
|
||||
|
||||
This file contains Eclipse-specific help files that can get simplify your life
|
||||
developing Google Refine with Eclipse (http://www.eclipse.org/).
|
||||
developing OpenRefine with Eclipse (http://www.eclipse.org/).
|
||||
|
||||
|
||||
|
||||
Code Style Format Configurations (Refine.style.xml)
|
||||
------------------------------------------------------
|
||||
|
||||
This is the code formatting configurations that all Google Refine developers should follow.
|
||||
This is the code formatting configurations that all OpenRefine developers should follow.
|
||||
|
||||
To import, open the Eclipse preferences, then follow to "Java > Code Style > Formatter"
|
||||
and click the "Import" button and load the file.
|
||||
@ -24,6 +24,6 @@
|
||||
Thank you for your interest.
|
||||
|
||||
|
||||
The Google Refine Development Team
|
||||
http://code.google.com/p/google-refine/
|
||||
The OpenRefine Development Team
|
||||
http://github.com/OpenRefine/OpenRefine
|
||||
|
@ -1,6 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<profiles version="11">
|
||||
<profile kind="CodeFormatterProfile" name="Google Refine" version="11">
|
||||
<profile kind="CodeFormatterProfile" name="OpenRefine" version="11">
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
|
||||
<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
|
||||
|
22
README.txt
22
README.txt
@ -1,25 +1,25 @@
|
||||
|
||||
|
||||
|
||||
G o o g l e R e f i n e
|
||||
---------------------------
|
||||
O p e n R e f i n e
|
||||
-------------------
|
||||
|
||||
|
||||
|
||||
What is this?
|
||||
-------------
|
||||
|
||||
Google Refine is a power tool that allows you to load data, understand it,
|
||||
is a power tool that allows you to load data, understand it,
|
||||
clean it up, reconcile it internally, and augment it with data coming from
|
||||
Freebase or other web sources. All with the comfort and privacy of
|
||||
your own computer.
|
||||
|
||||
|
||||
|
||||
Where can I get more information on Google Refine?
|
||||
Where can I get more information on ?
|
||||
----------------------------------------------
|
||||
|
||||
Look at the Google Refine web site
|
||||
Look at the web site
|
||||
|
||||
http://code.google.com/p/google-refine/
|
||||
|
||||
@ -28,9 +28,9 @@ Look at the Google Refine web site
|
||||
Licensing and legal issues
|
||||
--------------------------
|
||||
|
||||
Google Refine is open source software and is licensed under the BSD license
|
||||
is open source software and is licensed under the BSD license
|
||||
located in the LICENSE.txt. See that file also for information on open source
|
||||
libraries that Google Refine depends on.
|
||||
libraries that depends on.
|
||||
|
||||
|
||||
|
||||
@ -39,7 +39,9 @@ Credits
|
||||
|
||||
This software was created by Metaweb Technologies, Inc. and originally written
|
||||
and conceived by David Huynh <dfhuynh@google.com>. Metaweb Technologies, Inc.
|
||||
was acquired by Google, Inc. in July 2010.
|
||||
was acquired by Google, Inc. in July 2010 and the product was renamed Google Refine.
|
||||
In October 2012, it was renamed OpenRefine as it transitioned to a
|
||||
community-supported product.
|
||||
|
||||
This is the full list of contributors (in chronological order):
|
||||
|
||||
@ -66,5 +68,5 @@ This is the full list of contributors (in chronological order):
|
||||
Thank you for your interest.
|
||||
|
||||
|
||||
The Google Refine Development Team
|
||||
http://code.google.com/p/google-refine/
|
||||
The OpenRefine Development Team
|
||||
http://github.com/OpenRefine/OpenRefine
|
||||
|
@ -1,4 +1,4 @@
|
||||
#Mon Sep 27 15:02:14 PDT 2010
|
||||
eclipse.preferences.version=1
|
||||
formatter_profile=_Google Refine
|
||||
formatter_profile=_OpenRefine
|
||||
formatter_settings_version=11
|
||||
|
@ -1,4 +1,4 @@
|
||||
#Mon Sep 27 15:02:27 PDT 2010
|
||||
eclipse.preferences.version=1
|
||||
formatter_profile=_Google Refine
|
||||
formatter_profile=_OpenRefine
|
||||
formatter_settings_version=11
|
||||
|
@ -1,16 +1,16 @@
|
||||
|
||||
Google Refine Helpers for Eclipse
|
||||
---------------------------------
|
||||
OpenRefine Helpers for Eclipse
|
||||
------------------------------
|
||||
|
||||
|
||||
This file contains Eclipse-specific help files that can get simplify your life
|
||||
developing Google Refine with Eclipse (http://www.eclipse.org/).
|
||||
developing OpenRefine with Eclipse (http://www.eclipse.org/).
|
||||
|
||||
|
||||
Launch Files (*.launch)
|
||||
-----------------------
|
||||
|
||||
These are files that help you running Google Refine directly from eclipse without having to execute
|
||||
These are files that help you running OpenRefine directly from Eclipse without having to execute
|
||||
the shell scripts.
|
||||
|
||||
To run, right click on the files directly from Eclipse, then do "Run As -> <name>".
|
||||
@ -25,6 +25,6 @@
|
||||
Thank you for your interest.
|
||||
|
||||
|
||||
The Google Refine Development Team
|
||||
http://code.google.com/p/google-refine/
|
||||
The OpenRefine Development Team
|
||||
http://github.com/OpenRefine/OpenRefine
|
||||
|
@ -67,9 +67,9 @@ import org.slf4j.LoggerFactory;
|
||||
import edu.mit.simile.butterfly.ButterflyModuleImpl;
|
||||
|
||||
/**
|
||||
* This class contains all the code shared by various implementations of a Google Refine Broker.
|
||||
* This class contains all the code shared by various implementations of a OpenRefine Broker.
|
||||
*
|
||||
* A broker is a server used by multiple Google Refine installations to enable collaborative
|
||||
* A broker is a server used by multiple OpenRefine installations to enable collaborative
|
||||
* development over the same project.
|
||||
*
|
||||
* Broker implementations differ in how they store their state but all of them are required
|
||||
@ -228,7 +228,7 @@ public abstract class RefineBroker extends ButterflyModuleImpl {
|
||||
|
||||
HttpPost httpRequest = new HttpPost(USER_INFO_URL);
|
||||
httpRequest.setHeader(OAUTH_HEADER, oauth);
|
||||
httpRequest.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Google Refine Broker");
|
||||
httpRequest.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "OpenRefine Broker");
|
||||
httpRequest.setEntity(entity);
|
||||
|
||||
ResponseHandler<String> responseHandler = new BasicResponseHandler();
|
||||
|
@ -1,6 +1,6 @@
|
||||
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
|
||||
|
||||
<suite name="Google Refine Broker Unit Tests">
|
||||
<suite name="OpenRefine Broker Unit Tests">
|
||||
<test name="tests">
|
||||
<packages>
|
||||
<package name="com.google.refine.broker.tests.*"/>
|
||||
|
@ -1,17 +1,17 @@
|
||||
# Build properties for Google Refine build with Ant
|
||||
# Priority order (earliest property definition wins):
|
||||
# 1. command line
|
||||
# 2. this file
|
||||
# 3. build.xml defaults
|
||||
#
|
||||
#revision=rc1
|
||||
#version=2.1
|
||||
#full_version=0.0.0.0
|
||||
#
|
||||
# Launch4j directory (only needed to build Windows kits)
|
||||
launch4j.dir=/Program Files/Launch4j
|
||||
# Use something similar to the following on Unix-like systems
|
||||
#launch4j.dir=/opt/launch4j
|
||||
#
|
||||
#build.dir=build
|
||||
#dist.dir=dist
|
||||
# Build properties for OpenRefine build with Ant
|
||||
# Priority order (earliest property definition wins):
|
||||
# 1. command line
|
||||
# 2. this file
|
||||
# 3. build.xml defaults
|
||||
#
|
||||
#revision=rc1
|
||||
#version=2.1
|
||||
#full_version=0.0.0.0
|
||||
#
|
||||
# Launch4j directory (only needed to build Windows kits)
|
||||
launch4j.dir=/Program Files/Launch4j
|
||||
# Use something similar to the following on Unix-like systems
|
||||
#launch4j.dir=/opt/launch4j
|
||||
#
|
||||
#build.dir=build
|
||||
#dist.dir=dist
|
||||
|
40
build.xml
40
build.xml
@ -2,11 +2,11 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine Build File
|
||||
| OpenRefine Build File
|
||||
|
|
||||
+-->
|
||||
|
||||
<project name="google-refine" default="build" basedir=".">
|
||||
<project name="openrefine" default="build" basedir=".">
|
||||
|
||||
<!-- Properties are immutable, so anything set in this file takes priority-->
|
||||
<property file="build.properties"/>
|
||||
@ -19,11 +19,11 @@
|
||||
<property name="build.dir" value="build"/>
|
||||
<property name="dist.dir" value="dist"/>
|
||||
|
||||
<property name="appengine.app_id" value="google-refine-broker"/>
|
||||
<property name="appengine.app_id" value="openrefine-broker"/>
|
||||
<property name="appengine.version" value="1"/>
|
||||
<property name="appengine.sdk.dir" value="/opt/appengine"/>
|
||||
|
||||
<property name="fullname" value="google-refine-${version}-${revision}" />
|
||||
<property name="fullname" value="openrefine-${version}-${revision}" />
|
||||
|
||||
<property name="main.dir" value="${basedir}/main" />
|
||||
|
||||
@ -61,7 +61,7 @@
|
||||
<property name="built.broker.webapp.dir" value="${build.dir}/broker" />
|
||||
|
||||
<property name="mac.dir" value="${build.dir}/mac" />
|
||||
<property name="release.name" value="google-refine-${version}" />
|
||||
<property name="release.name" value="openrefine-${version}" />
|
||||
<property name="windows.dir" value="${build.dir}/windows/${release.name}" />
|
||||
<property name="linux.dir" value="${build.dir}/linux/${release.name}" />
|
||||
|
||||
@ -227,12 +227,12 @@
|
||||
|
||||
<jarbundler
|
||||
dir="${mac.dir}"
|
||||
name="Google Refine"
|
||||
name="OpenRefine"
|
||||
mainclass="com.google.refine.Refine"
|
||||
icon="${graphics.dir}/icon/google-refine.icns"
|
||||
icon="${graphics.dir}/icon/openrefine.icns"
|
||||
version="${version}"
|
||||
infostring="Google Refine ${version}"
|
||||
aboutmenuname="Google Refine"
|
||||
infostring="OpenRefine ${version}"
|
||||
aboutmenuname="OpenRefine"
|
||||
workingdirectory="$APP_PACKAGE/Contents/Resources"
|
||||
jvmversion="1.6+"
|
||||
bundleid="com.google.refine.Refine"
|
||||
@ -263,10 +263,10 @@
|
||||
<launch4j>
|
||||
<config
|
||||
headerType="console"
|
||||
outfile="${windows.dir}/google-refine.exe"
|
||||
outfile="${windows.dir}/openrefine.exe"
|
||||
jarPath="server/lib/${fullname}-server.jar"
|
||||
dontWrapJar="true"
|
||||
icon="${graphics.dir}/icon/google-refine.ico">
|
||||
icon="${graphics.dir}/icon/openrefine.ico">
|
||||
<classPath mainClass="com.google.refine.Refine">
|
||||
<cp>server/lib/*.jar</cp>
|
||||
</classPath>
|
||||
@ -276,14 +276,14 @@
|
||||
<versionInfo
|
||||
fileVersion="${full_version}"
|
||||
txtFileVersion="${version}"
|
||||
fileDescription="google-refine"
|
||||
copyright="Copyright (c) 2010, Google, Inc."
|
||||
fileDescription="openrefine"
|
||||
copyright="Copyright (c) 2012 OpenRefine contributors, 2010, Google, Inc."
|
||||
productVersion="${full_version}"
|
||||
txtProductVersion="${full_version}"
|
||||
productName="Google Refine"
|
||||
companyName="Google, Inc."
|
||||
internalName="google-refine"
|
||||
originalFilename="google-refine.exe"
|
||||
productName="OpenRefine"
|
||||
companyName="OpenRefine team"
|
||||
internalName="openrefine"
|
||||
originalFilename="openrefine.exe"
|
||||
/>
|
||||
</config>
|
||||
</launch4j>
|
||||
@ -311,14 +311,14 @@
|
||||
</fileset>
|
||||
</copy>
|
||||
|
||||
<copy file="${conf.dir}/google-refine.l4j.ini" tofile="${windows.dir}/google-refine.l4j.ini"/>
|
||||
<copy file="${conf.dir}/openrefine.l4j.ini" tofile="${windows.dir}/openrefine.l4j.ini"/>
|
||||
<copy file="${basedir}/refine.bat" tofile="${windows.dir}/refine.bat"/>
|
||||
<copy file="${basedir}/refine.ini" tofile="${windows.dir}/refine.ini"/>
|
||||
<copy file="${basedir}/README.txt" tofile="${windows.dir}/README.txt"/>
|
||||
<copy file="${basedir}/LICENSE.txt" tofile="${windows.dir}/LICENSE.txt"/>
|
||||
|
||||
<mkdir dir="${dist.dir}"/>
|
||||
<zip destfile="${dist.dir}/google-refine-${version}-${revision}.zip" basedir="${windows.dir}/.." includes="${release.name}/**"/>
|
||||
<zip destfile="${dist.dir}/openrefine-${version}-${revision}.zip" basedir="${windows.dir}/.." includes="${release.name}/**"/>
|
||||
</target>
|
||||
|
||||
<target name="linux" depends="jar, prepare_webapp">
|
||||
@ -349,7 +349,7 @@
|
||||
<copy file="${basedir}/refine" tofile="${linux.dir}/refine"/>
|
||||
|
||||
<mkdir dir="${dist.dir}"/>
|
||||
<tar longfile="gnu" compression="gzip" destfile="${dist.dir}/google-refine-${version}-${revision}.tar.gz">
|
||||
<tar longfile="gnu" compression="gzip" destfile="${dist.dir}/openrefine-${version}-${revision}.tar.gz">
|
||||
<tarfileset dir="${linux.dir}/.." filemode="755">
|
||||
<include name="${release.name}/refine"/>
|
||||
</tarfileset>
|
||||
|
@ -1,13 +1,13 @@
|
||||
# Launch4j runtime config
|
||||
|
||||
# initial memory heap size
|
||||
-Xms256M
|
||||
|
||||
# max memory memory heap size
|
||||
-Xmx1024M
|
||||
|
||||
# Use system defined HTTP proxies
|
||||
-Djava.net.useSystemProxies=true
|
||||
|
||||
#-XX:+UseLargePages
|
||||
#-Dsomevar="%SOMEVAR%"
|
||||
# Launch4j runtime config
|
||||
|
||||
# initial memory heap size
|
||||
-Xms256M
|
||||
|
||||
# max memory memory heap size
|
||||
-Xmx1024M
|
||||
|
||||
# Use system defined HTTP proxies
|
||||
-Djava.net.useSystemProxies=true
|
||||
|
||||
#-XX:+UseLargePages
|
||||
#-Dsomevar="%SOMEVAR%"
|
@ -1,10 +1,10 @@
|
||||
<?xml version="1.0"?>
|
||||
<ruleset name="Google Refine PMD Ruleset"
|
||||
<ruleset name="OpenRefine PMD Ruleset"
|
||||
xmlns="http://pmd.sf.net/ruleset/1.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd"
|
||||
xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd">
|
||||
<description>Google Refine PMD Ruleset</description>
|
||||
<description>OpenRefine PMD Ruleset</description>
|
||||
|
||||
<rule ref="rulesets/basic.xml">
|
||||
<exclude name="EmptyCatchBlock"/>
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine Extensions Build File
|
||||
| OpenRefine Extensions Build File
|
||||
|
|
||||
+-->
|
||||
|
||||
<project name="google-refine-extensions" default="build" basedir=".">
|
||||
<project name="openrefine-extensions" default="build" basedir=".">
|
||||
<target name="build">
|
||||
<echo message="Building extensions" />
|
||||
<ant dir="sample/" target="build" />
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine Extension Freebase Build File
|
||||
| OpenRefine Extension Freebase Build File
|
||||
|
|
||||
+-->
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = freebase
|
||||
description = Google Refine Freebase Extension
|
||||
description = OpenRefine Freebase Extension
|
||||
templating = false
|
||||
requires = core
|
||||
|
@ -1,4 +1,4 @@
|
||||
Google Refine extension for Google Spreadsheets
|
||||
OpenRefine extension for Google Spreadsheets
|
||||
by Tom Morris <tfmorris@gmail.com>
|
||||
|
||||
This extension provides Refine with the ability to read Google spreadsheets
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine GData Extension Build File
|
||||
| OpenRefine GData Extension Build File
|
||||
|
|
||||
+-->
|
||||
|
||||
@ -75,7 +75,7 @@
|
||||
<copy file="${basedir}/LICENSE.txt" tofile="${ext.dir}/LICENSE.txt"/>
|
||||
<copy file="${basedir}/README.txt" tofile="${ext.dir}/README.txt"/>
|
||||
|
||||
<zip destfile="${dist.dir}/google-refine-${fullname}.zip">
|
||||
<zip destfile="${dist.dir}/openrefine-${fullname}.zip">
|
||||
<zipfileset dir="${ext.dir}/..">
|
||||
<include name="**/**"/>
|
||||
</zipfileset>
|
||||
|
@ -1,4 +1,4 @@
|
||||
name = gdata
|
||||
description = Google Data (gData) importer/exporter for Google Refine
|
||||
description = Google Data (gData) importer/exporter for OpenRefine
|
||||
templating.macros = macros.vm
|
||||
requires = core
|
||||
|
@ -34,7 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Google Refine - Authorization</title>
|
||||
<title>OpenRefine - Authorization</title>
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
|
@ -34,10 +34,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Google Refine - Authorized</title>
|
||||
<title>OpenRefine - Authorized</title>
|
||||
</head>
|
||||
<body>
|
||||
Authorization process completed. Close this window and return to Google Refine.
|
||||
Authorization process completed. Close this window and return to OpenRefine.
|
||||
|
||||
<script>
|
||||
var windowName = "$winname";
|
||||
|
@ -8,7 +8,7 @@
|
||||
<body>
|
||||
<h1>Google Data Extension v$version</h1>
|
||||
<h2>by Tom Morris <tfmorris@gmail.com></h2>
|
||||
<p>The Google Spreadsheet/Google Data extension allows Google Refine to read
|
||||
<p>The Google Spreadsheet/Google Data extension allows OpenRefine to read
|
||||
(and write, soon) Google Spreadsheets. It should be easily adaptable to
|
||||
other data sources which implement the gData protocol such as Google Base.
|
||||
</p>
|
||||
|
@ -41,7 +41,7 @@ GdataExtension.showAuthorizationDialog = function(onAuthorized, onNotAuthorized)
|
||||
if (window.name) {
|
||||
var windowName = window.name;
|
||||
} else {
|
||||
var windowName = "googlerefine" + new Date().getTime();
|
||||
var windowName = "openrefine" + new Date().getTime();
|
||||
window.name = windowName;
|
||||
}
|
||||
|
||||
@ -58,5 +58,5 @@ GdataExtension.showAuthorizationDialog = function(onAuthorized, onNotAuthorized)
|
||||
window[callbackName] = callback;
|
||||
|
||||
var url = ModuleWirings['gdata'] + "authorize?winname=" + escape(windowName) + "&callback=" + escape(callbackName);
|
||||
var win = window.open(url, "googlerefinegdataauth", "resizable=1,width=800,height=600");
|
||||
var win = window.open(url, "openrefinegdataauth", "resizable=1,width=800,height=600");
|
||||
};
|
||||
|
@ -61,7 +61,7 @@ import edu.mit.simile.butterfly.ButterflyModule;
|
||||
* @license New BSD http://www.opensource.org/licenses/bsd-license.php
|
||||
*/
|
||||
abstract public class GDataExtension {
|
||||
static final String SERVICE_APP_NAME = "Google-Refine-GData-Extension";
|
||||
static final String SERVICE_APP_NAME = "OpenRefine-GData-Extension";
|
||||
|
||||
static public String getAuthorizationUrl(ButterflyModule module, HttpServletRequest request)
|
||||
throws MalformedURLException {
|
||||
|
@ -54,7 +54,7 @@ import com.google.refine.model.Project;
|
||||
import com.google.refine.util.JSONUtilities;
|
||||
|
||||
/**
|
||||
* Google Refine parser for Google Spreadsheets.
|
||||
* OpenRefine parser for Google Spreadsheets.
|
||||
*
|
||||
* @author Tom Morris <tfmorris@gmail.com>
|
||||
* @copyright 2010 Thomas F. Morris
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine Extension Jython Build File
|
||||
| OpenRefine Extension Jython Build File
|
||||
|
|
||||
+-->
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class JythonEvaluable implements Evaluable {
|
||||
private static PythonInterpreter _engine;
|
||||
|
||||
// FIXME(SM): this initialization logic depends on the fact that the JVM's
|
||||
// current working directory is the root of the Google Refine distributions
|
||||
// current working directory is the root of the OpenRefine distributions
|
||||
// or the development checkouts. While this works in practice, it would
|
||||
// be preferable to have a more reliable address space, but since we
|
||||
// don't have access to the servlet context from this class this is
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine PC Axis extension build file
|
||||
| OpenRefine PC Axis extension build file
|
||||
|
|
||||
+-->
|
||||
|
||||
@ -78,7 +78,7 @@
|
||||
<copy file="${basedir}/LICENSE.txt" tofile="${ext.dir}/LICENSE.txt"/>
|
||||
<copy file="${basedir}/README.txt" tofile="${ext.dir}/README.txt"/>
|
||||
|
||||
<zip destfile="${dist.dir}/google-refine-${fullname}.zip">
|
||||
<zip destfile="${dist.dir}/openrefine-${fullname}.zip">
|
||||
<zipfileset dir="${ext.dir}/..">
|
||||
<include name="**/**"/>
|
||||
</zipfileset>
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
<!--+
|
||||
|
|
||||
| Google Refine Extension Sample Extension Build File
|
||||
| OpenRefine Extension Sample Extension Build File
|
||||
|
|
||||
+-->
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 7.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
@ -1,4 +1,4 @@
|
||||
#Mon Sep 27 15:01:52 PDT 2010
|
||||
eclipse.preferences.version=1
|
||||
formatter_profile=_Google Refine
|
||||
formatter_profile=_OpenRefine
|
||||
formatter_settings_version=11
|
||||
|
@ -1,16 +1,16 @@
|
||||
|
||||
Google Refine Helpers for Eclipse
|
||||
OpenRefine Helpers for Eclipse
|
||||
---------------------------------
|
||||
|
||||
|
||||
This file contains Eclipse-specific help files that can get simplify your life
|
||||
developing Google Refine with Eclipse (http://www.eclipse.org/).
|
||||
developing OpenRefine with Eclipse (http://www.eclipse.org/).
|
||||
|
||||
|
||||
Launch Files (*.launch)
|
||||
-----------------------
|
||||
|
||||
These are files that help you running Google Refine directly from eclipse without having to execute
|
||||
These are files that help you running OpenRefine directly from eclipse without having to execute
|
||||
the shell scripts.
|
||||
|
||||
To run, right click on the files directly from Eclipse, then do "Run As -> <name>".
|
||||
@ -26,6 +26,6 @@
|
||||
Thank you for your interest.
|
||||
|
||||
|
||||
The Google Refine Development Team
|
||||
http://code.google.com/p/google-refine/
|
||||
The OpenRefine Development Team
|
||||
http://github.com/OpenRefine/OpenRefine
|
||||
|
@ -135,9 +135,9 @@ public abstract class ProjectManager {
|
||||
*/
|
||||
protected abstract Project loadProject(long id);
|
||||
|
||||
//------------Import and Export from Google Refine archive-----------------
|
||||
//------------Import and Export from Refine archive-----------------
|
||||
/**
|
||||
* Import project from a Google Refine archive
|
||||
* Import project from a Refine archive
|
||||
* @param projectID
|
||||
* @param inputStream
|
||||
* @param gziped
|
||||
@ -146,7 +146,7 @@ public abstract class ProjectManager {
|
||||
public abstract void importProject(long projectID, InputStream inputStream, boolean gziped) throws IOException;
|
||||
|
||||
/**
|
||||
* Export project to a Google Refine archive
|
||||
* Export project to a Refine archive
|
||||
* @param projectId
|
||||
* @param tos
|
||||
* @throws IOException
|
||||
|
@ -59,14 +59,15 @@ import edu.mit.simile.butterfly.Butterfly;
|
||||
import edu.mit.simile.butterfly.ButterflyModule;
|
||||
|
||||
public class RefineServlet extends Butterfly {
|
||||
static private String ASSIGNED_VERSION = "2.5";
|
||||
static private String ASSIGNED_VERSION = "2.6";
|
||||
|
||||
static public String VERSION = "";
|
||||
static public String REVISION = "";
|
||||
static public String FULL_VERSION = "";
|
||||
static public String FULLNAME = "Google Refine ";
|
||||
static public String FULLNAME = "OpenRefine ";
|
||||
|
||||
static public final String AGENT_ID = "/en/google_refine";
|
||||
|
||||
static public final String AGENT_ID = "/en/google_refine"; // TODO: Unused? Freebase ID
|
||||
|
||||
static final long serialVersionUID = 2386057901503517403L;
|
||||
|
||||
@ -369,7 +370,7 @@ public class RefineServlet extends Butterfly {
|
||||
}
|
||||
|
||||
static public void setUserAgent(HttpURLConnection httpConnection) {
|
||||
httpConnection.addRequestProperty("User-Agent", "Google Refine/" + FULL_VERSION);
|
||||
httpConnection.addRequestProperty("User-Agent", "OpenRefine/" + FULL_VERSION);
|
||||
}
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -52,7 +52,7 @@ public class OpenWorkspaceDirCommand extends Command {
|
||||
String serverName = request.getServerName();
|
||||
|
||||
if (!"127.0.0.1".equals(serverName) && !"localhost".equals(serverName)) {
|
||||
respond(response, "{ \"code\" : \"error\", \"message\" : \"Workspace directory can only be opened on the local machine where Google Refine is run.\" }");
|
||||
respond(response, "{ \"code\" : \"error\", \"message\" : \"Workspace directory can only be opened on the local machine where OpenRefine is run.\" }");
|
||||
} else if (ProjectManager.singleton instanceof FileProjectManager) {
|
||||
File dir = ((FileProjectManager) ProjectManager.singleton).getWorkspaceDir();
|
||||
|
||||
|
@ -160,7 +160,7 @@ public class AuthorizeCommand extends Command {
|
||||
throw new RuntimeException("referrer '" + referrer + "' can't be parsed as a URL");
|
||||
}
|
||||
} else {
|
||||
throw new RuntimeException("neither the 'host' nor 'referer' headers were present in the HTTP response, I can't determine what URL Google Refine is listening to.");
|
||||
throw new RuntimeException("neither the 'host' nor 'referer' headers were present in the HTTP response, I can't determine what URL OpenRefine is listening to.");
|
||||
}
|
||||
}
|
||||
return "http://" + host + "/command/core/authorize/" + provider.getHost();
|
||||
|
@ -1,199 +1,199 @@
|
||||
/*
|
||||
|
||||
Copyright 2011, Thomas F. Morris
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
package com.google.refine.tests.importers;
|
||||
|
||||
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.refine.importers.ExcelImporter;
|
||||
import com.google.refine.util.JSONUtilities;
|
||||
|
||||
public class ExcelImporterTests extends ImporterTest {
|
||||
|
||||
private static final double EPSILON = 0.0000001;
|
||||
private static final int SHEETS = 3;
|
||||
private static final int ROWS = 5;
|
||||
private static final int COLUMNS = 6;
|
||||
|
||||
//private static final File xlsxFile = createSpreadsheet(true);
|
||||
private static final File xlsFile = createSpreadsheet(false);
|
||||
|
||||
@Override
|
||||
@BeforeTest
|
||||
public void init() {
|
||||
logger = LoggerFactory.getLogger(this.getClass());
|
||||
}
|
||||
|
||||
//System Under Test
|
||||
ExcelImporter SUT = null;
|
||||
|
||||
@Override
|
||||
@BeforeMethod
|
||||
public void setUp(){
|
||||
super.setUp();
|
||||
SUT = new ExcelImporter();
|
||||
}
|
||||
|
||||
@Override
|
||||
@AfterMethod
|
||||
public void tearDown(){
|
||||
SUT = null;
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
//---------------------read tests------------------------
|
||||
@Test
|
||||
public void readXls() throws FileNotFoundException{
|
||||
|
||||
JSONArray sheets = new JSONArray();
|
||||
JSONUtilities.append(sheets, 0);
|
||||
// JSONUtilities.append(sheets, 1);
|
||||
// JSONUtilities.append(sheets, 2);
|
||||
whenGetArrayOption("sheets", options, sheets);
|
||||
|
||||
whenGetIntegerOption("ignoreLines", options, 0);
|
||||
whenGetIntegerOption("headerLines", options, 0);
|
||||
whenGetIntegerOption("skipDataLines", options, 0);
|
||||
whenGetIntegerOption("limit", options, -1);
|
||||
whenGetBooleanOption("storeBlankCellsAsNulls",options,true);
|
||||
|
||||
InputStream stream = new FileInputStream(xlsFile);
|
||||
|
||||
try {
|
||||
parseOneFile(SUT, stream);
|
||||
} catch (Exception e) {
|
||||
Assert.fail(e.getMessage());
|
||||
}
|
||||
|
||||
Assert.assertEquals(project.rows.size(), ROWS);
|
||||
Assert.assertEquals(project.rows.get(1).cells.size(), COLUMNS);
|
||||
Assert.assertEquals(((Number)project.rows.get(1).getCellValue(0)).doubleValue(),1.1, EPSILON);
|
||||
Assert.assertEquals(((Number)project.rows.get(2).getCellValue(0)).doubleValue(),2.2, EPSILON);
|
||||
|
||||
Assert.assertFalse((Boolean)project.rows.get(1).getCellValue(1));
|
||||
Assert.assertTrue((Boolean)project.rows.get(2).getCellValue(1));
|
||||
|
||||
Assert.assertEquals((String)project.rows.get(1).getCellValue(4)," Row 1 Col 5");
|
||||
Assert.assertNull((String)project.rows.get(1).getCellValue(5));
|
||||
|
||||
try {
|
||||
verify(options, times(1)).getInt("ignoreLines");
|
||||
verify(options, times(1)).getInt("headerLines");
|
||||
verify(options, times(1)).getInt("skipDataLines");
|
||||
verify(options, times(1)).getInt("limit");
|
||||
verify(options, times(1)).getBoolean("storeBlankCellsAsNulls");
|
||||
} catch (JSONException e) {
|
||||
Assert.fail("JSON exception",e);
|
||||
}
|
||||
}
|
||||
|
||||
private static File createSpreadsheet(boolean xml) {
|
||||
|
||||
final Workbook wb = xml ? new XSSFWorkbook() : new HSSFWorkbook();
|
||||
|
||||
for (int s = 0; s < SHEETS; s++) {
|
||||
Sheet sheet = wb.createSheet("Test Sheet " + s);
|
||||
|
||||
for (int row = 0; row < ROWS; row++) {
|
||||
int col = 0;
|
||||
Row r = sheet.createRow(row);
|
||||
Cell c;
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(row * 1.1); // double
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(row % 2 == 0); // boolean
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(Calendar.getInstance()); // calendar
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(new Date()); // date
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(" Row " + row + " Col " + col); // string
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(""); // string
|
||||
|
||||
// HSSFHyperlink hl = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
|
||||
// hl.setLabel(cellData.text);
|
||||
// hl.setAddress(cellData.link);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
File file = null;
|
||||
try {
|
||||
file = File.createTempFile("google-refine-importer-test", xml ? ".xlsx" : ".xls");
|
||||
file.deleteOnExit();
|
||||
OutputStream outputStream = new FileOutputStream(file);
|
||||
wb.write(outputStream);
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
return file;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
|
||||
Copyright 2011, Thomas F. Morris
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following disclaimer
|
||||
in the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
* Neither the name of Google Inc. nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
package com.google.refine.tests.importers;
|
||||
|
||||
|
||||
import static org.mockito.Mockito.times;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Row;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.usermodel.Workbook;
|
||||
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.testng.Assert;
|
||||
import org.testng.annotations.AfterMethod;
|
||||
import org.testng.annotations.BeforeMethod;
|
||||
import org.testng.annotations.BeforeTest;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.refine.importers.ExcelImporter;
|
||||
import com.google.refine.util.JSONUtilities;
|
||||
|
||||
public class ExcelImporterTests extends ImporterTest {
|
||||
|
||||
private static final double EPSILON = 0.0000001;
|
||||
private static final int SHEETS = 3;
|
||||
private static final int ROWS = 5;
|
||||
private static final int COLUMNS = 6;
|
||||
|
||||
//private static final File xlsxFile = createSpreadsheet(true);
|
||||
private static final File xlsFile = createSpreadsheet(false);
|
||||
|
||||
@Override
|
||||
@BeforeTest
|
||||
public void init() {
|
||||
logger = LoggerFactory.getLogger(this.getClass());
|
||||
}
|
||||
|
||||
//System Under Test
|
||||
ExcelImporter SUT = null;
|
||||
|
||||
@Override
|
||||
@BeforeMethod
|
||||
public void setUp(){
|
||||
super.setUp();
|
||||
SUT = new ExcelImporter();
|
||||
}
|
||||
|
||||
@Override
|
||||
@AfterMethod
|
||||
public void tearDown(){
|
||||
SUT = null;
|
||||
super.tearDown();
|
||||
}
|
||||
|
||||
//---------------------read tests------------------------
|
||||
@Test
|
||||
public void readXls() throws FileNotFoundException{
|
||||
|
||||
JSONArray sheets = new JSONArray();
|
||||
JSONUtilities.append(sheets, 0);
|
||||
// JSONUtilities.append(sheets, 1);
|
||||
// JSONUtilities.append(sheets, 2);
|
||||
whenGetArrayOption("sheets", options, sheets);
|
||||
|
||||
whenGetIntegerOption("ignoreLines", options, 0);
|
||||
whenGetIntegerOption("headerLines", options, 0);
|
||||
whenGetIntegerOption("skipDataLines", options, 0);
|
||||
whenGetIntegerOption("limit", options, -1);
|
||||
whenGetBooleanOption("storeBlankCellsAsNulls",options,true);
|
||||
|
||||
InputStream stream = new FileInputStream(xlsFile);
|
||||
|
||||
try {
|
||||
parseOneFile(SUT, stream);
|
||||
} catch (Exception e) {
|
||||
Assert.fail(e.getMessage());
|
||||
}
|
||||
|
||||
Assert.assertEquals(project.rows.size(), ROWS);
|
||||
Assert.assertEquals(project.rows.get(1).cells.size(), COLUMNS);
|
||||
Assert.assertEquals(((Number)project.rows.get(1).getCellValue(0)).doubleValue(),1.1, EPSILON);
|
||||
Assert.assertEquals(((Number)project.rows.get(2).getCellValue(0)).doubleValue(),2.2, EPSILON);
|
||||
|
||||
Assert.assertFalse((Boolean)project.rows.get(1).getCellValue(1));
|
||||
Assert.assertTrue((Boolean)project.rows.get(2).getCellValue(1));
|
||||
|
||||
Assert.assertEquals((String)project.rows.get(1).getCellValue(4)," Row 1 Col 5");
|
||||
Assert.assertNull((String)project.rows.get(1).getCellValue(5));
|
||||
|
||||
try {
|
||||
verify(options, times(1)).getInt("ignoreLines");
|
||||
verify(options, times(1)).getInt("headerLines");
|
||||
verify(options, times(1)).getInt("skipDataLines");
|
||||
verify(options, times(1)).getInt("limit");
|
||||
verify(options, times(1)).getBoolean("storeBlankCellsAsNulls");
|
||||
} catch (JSONException e) {
|
||||
Assert.fail("JSON exception",e);
|
||||
}
|
||||
}
|
||||
|
||||
private static File createSpreadsheet(boolean xml) {
|
||||
|
||||
final Workbook wb = xml ? new XSSFWorkbook() : new HSSFWorkbook();
|
||||
|
||||
for (int s = 0; s < SHEETS; s++) {
|
||||
Sheet sheet = wb.createSheet("Test Sheet " + s);
|
||||
|
||||
for (int row = 0; row < ROWS; row++) {
|
||||
int col = 0;
|
||||
Row r = sheet.createRow(row);
|
||||
Cell c;
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(row * 1.1); // double
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(row % 2 == 0); // boolean
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(Calendar.getInstance()); // calendar
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(new Date()); // date
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(" Row " + row + " Col " + col); // string
|
||||
|
||||
c = r.createCell(col++);
|
||||
c.setCellValue(""); // string
|
||||
|
||||
// HSSFHyperlink hl = new HSSFHyperlink(HSSFHyperlink.LINK_URL);
|
||||
// hl.setLabel(cellData.text);
|
||||
// hl.setAddress(cellData.link);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
File file = null;
|
||||
try {
|
||||
file = File.createTempFile("oepnrefine-importer-test", xml ? ".xlsx" : ".xls");
|
||||
file.deleteOnExit();
|
||||
OutputStream outputStream = new FileOutputStream(file);
|
||||
wb.write(outputStream);
|
||||
outputStream.flush();
|
||||
outputStream.close();
|
||||
} catch (IOException e) {
|
||||
return null;
|
||||
}
|
||||
return file;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -5,8 +5,8 @@
|
||||
"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
|
||||
|
||||
<web-app>
|
||||
<display-name>Google Refine</display-name>
|
||||
<description>Google Refine Webapp</description>
|
||||
<display-name>OpenRefine</display-name>
|
||||
<description>OpenRefine Webapp</description>
|
||||
|
||||
<!--+
|
||||
| This forces all the session cookies to default to the root path.
|
||||
|
@ -1,3 +1,3 @@
|
||||
description = Google Refine Core Module
|
||||
description = OpenRefine Core Module
|
||||
implements = core
|
||||
templating.macros = macros.vm
|
||||
|
@ -35,7 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="chrome-1">
|
||||
<title>About - Google Refine</title>
|
||||
<title>About - OpenRefine</title>
|
||||
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||
<link rel="stylesheet" href="/styles/common.less" />
|
||||
<style>
|
||||
@ -47,9 +47,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<script type="text/javascript" src="externals/jquery-1.4.2.min.js"></script>
|
||||
<script>
|
||||
$(function() {
|
||||
if (GoogleRefineVersion && GoogleRefineVersion.version) {
|
||||
if (GoogleRefineVersion.version != "$VERSION") {
|
||||
$("#version").text("Version " + GoogleRefineVersion.version + " [" + GoogleRefineVersion.revision + "]").show();
|
||||
if (OpenRefineVersion && OpenRefineVersion.version) {
|
||||
if (OpenRefineVersion.version != "$VERSION") {
|
||||
$("#version").text("Version " + OpenRefineVersion.version + " [" + OpenRefineVersion.revision + "]").show();
|
||||
}
|
||||
else {
|
||||
$("#version").text("Version <trunk>").show();
|
||||
@ -60,25 +60,27 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<a id="app-home-button" href="./"><img alt="Google Refine" src="images/logo-googlerefine-30.png" width="129" height="29" /></a>
|
||||
<a id="app-home-button" href="./"><img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" /></a>
|
||||
</div>
|
||||
|
||||
<div id="body-info">
|
||||
<h1>About Google Refine</h1>
|
||||
<h1>About OpenRefine</h1>
|
||||
<h2 id="version" style="display: none"></h2>
|
||||
|
||||
<p>
|
||||
Google Refine is a power tool for working with messy data. Use it to improve data consistency,
|
||||
OpenRefine is a power tool for working with messy data. Use it to improve data consistency,
|
||||
link it to data registries like Freebase, augment it with data from other sources, transform it
|
||||
into different formats for other tools to consume, and contribute it to back to the original
|
||||
sources. Google Refine is not a web service but a desktop app that runs on your own computer,
|
||||
sources. OpenRefine is not a web service but a desktop app that runs on your own computer,
|
||||
so you can process sensitive data with privacy.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Google Refine was originally developed as "Freebase Gridworks" by
|
||||
OpenRefine was originally developed as "Freebase Gridworks" by
|
||||
<a href="http://www.metaweb.com/">Metaweb Technologies, Inc.</a>. Metaweb was acquired by
|
||||
<a href="http://www.google.com/">Google</a> in July 2010.
|
||||
<a href="http://www.google.com/">Google</a> in July 2010 and they renamed the product
|
||||
Google Refine. In October, 2012, the product was renamed OpenRefine as it transitioned to
|
||||
a community supported project.
|
||||
</p>
|
||||
|
||||
<table cellspacing="0" cellpadding="0"><tr>
|
||||
@ -111,10 +113,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</td>
|
||||
</table>
|
||||
|
||||
<h2>Google Refine License</h2>
|
||||
<h2>OpenRefine License</h2>
|
||||
|
||||
<pre class="license">
|
||||
Copyright 2010-2011, Google Inc.
|
||||
Copyright 2010-2012, Google Inc. and contributors
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
|
@ -36,13 +36,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=8;IE=9;chrome=1;">
|
||||
<title>Error - Google Refine</title>
|
||||
<title>Error - OpenRefine</title>
|
||||
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||
<link rel="stylesheet" href="styles/common.less" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<a id="app-home-button" href="/"><img alt="Google Refine" src="images/logo-googlerefine-30.png" width="129" height="29" /></a>
|
||||
<a id="app-home-button" href="/"><img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" /></a>
|
||||
</div>
|
||||
<div id="body-info">
|
||||
<h1>Something went wrong!</h1>
|
||||
|
BIN
main/webapp/modules/core/images/logo-openrefine-30.png
Normal file
BIN
main/webapp/modules/core/images/logo-openrefine-30.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
main/webapp/modules/core/images/logo-openrefine-40.png
Normal file
BIN
main/webapp/modules/core/images/logo-openrefine-40.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
@ -35,7 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=8;IE=9;chrome=1;">
|
||||
<title>Google Refine</title>
|
||||
<title>OpenRefine</title>
|
||||
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||
<script type="text/javascript" src="wirings.js"></script>
|
||||
$scriptInjection
|
||||
@ -44,7 +44,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<img alt="Google Refine" src="images/logo-googlerefine-30.png" width="129" height="29" />
|
||||
<img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" />
|
||||
<span id="slogan">A power tool for working with messy data.</span>
|
||||
</div>
|
||||
|
||||
@ -54,8 +54,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
<div id="project-links">
|
||||
<div id="logo-container">
|
||||
<img alt="Google Refine" src="images/logo-gem-40.png" />
|
||||
<div id="google-refine-version"></div>
|
||||
<img alt="OpenRefine" src="images/logo-gem-40.png" />
|
||||
<div id="openrefine-version"></div>
|
||||
</div>
|
||||
<ul>
|
||||
<li><a href="http://code.google.com/p/google-refine/wiki/DocumentationForUsers">Help</a></li>
|
||||
|
@ -35,7 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=8;IE=9;chrome=1;">
|
||||
<title>Preferences - Google Refine</title>
|
||||
<title>Preferences - OpenRefine</title>
|
||||
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||
<script type="text/javascript" src="wirings.js"></script>
|
||||
$scriptInjection
|
||||
@ -43,7 +43,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<a id="app-home-button" href="./"><img alt="Google Refine" src="images/logo-googlerefine-30.png" width="129" height="29" /></a>
|
||||
<a id="app-home-button" href="./"><img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" /></a>
|
||||
</div>
|
||||
|
||||
<div id="body-info">
|
||||
|
@ -35,7 +35,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=8;IE=9;chrome=1;">
|
||||
<title>Google Refine</title>
|
||||
<title>OpenRefine</title>
|
||||
<script type="text/javascript">var theProject = { id : $projectID };</script>
|
||||
<script type="text/javascript" src="wirings.js"></script>
|
||||
<link rel="icon" type="image/png" href="images/favicon.png">
|
||||
@ -45,7 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
</head>
|
||||
<body>
|
||||
<div id="header">
|
||||
<a id="app-home-button" href="./"><img alt="Google Refine" src="images/logo-googlerefine-30.png" width="129" height="29" /></a>
|
||||
<a id="app-home-button" href="./"><img alt="OpenRefine" src="images/logo-openrefine-30.png" width="129" height="29" /></a>
|
||||
<div id="project-title">
|
||||
<span id="project-name-button" class="app-path-section" title="Click to rename project"></span>
|
||||
<a id="project-permalink-button" href="javascript:{}" class="secondary">Permalink</a>
|
||||
|
@ -31,7 +31,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
*/
|
||||
|
||||
var GoogleRefineVersion;
|
||||
var OpenRefineVersion;
|
||||
|
||||
var Refine = {
|
||||
actionAreas: []
|
||||
@ -52,7 +52,7 @@ Refine.selectActionArea = function(id) {
|
||||
|
||||
$(function() {
|
||||
var isThereNewRelease = function() {
|
||||
var thisRevision = GoogleRefineVersion.revision;
|
||||
var thisRevision = OpenRefineVersion.revision;
|
||||
|
||||
var revision_pattern = /r([0-9]+)/;
|
||||
|
||||
@ -60,10 +60,10 @@ $(function() {
|
||||
return false;
|
||||
}
|
||||
|
||||
var latestRevision = GoogleRefineReleases.releases[0].revision;
|
||||
var latestRevision = OpenRefineReleases.releases[0].revision;
|
||||
|
||||
var thisRev = parseInt(revision_pattern.exec(thisRevision)[1],10);
|
||||
var latestRev = parseInt(revision_pattern.exec(GoogleRefineReleases.releases[0].revision)[1],10);
|
||||
var latestRev = parseInt(revision_pattern.exec(OpenRefineReleases.releases[0].revision)[1],10);
|
||||
|
||||
return latestRev > thisRev;
|
||||
};
|
||||
@ -73,9 +73,9 @@ $(function() {
|
||||
"command/core/get-version",
|
||||
null,
|
||||
function(data) {
|
||||
GoogleRefineVersion = data;
|
||||
OpenRefineVersion = data;
|
||||
|
||||
$("#google-refine-version").text("Version " + GoogleRefineVersion.full_version);
|
||||
$("#openrefine-version").text("Version " + OpenRefineVersion.full_version);
|
||||
|
||||
var script = $('<script></script>')
|
||||
.attr("src", "http://google-refine.googlecode.com/svn/support/releases.js")
|
||||
|
@ -4,7 +4,7 @@
|
||||
<h3>Create a project by importing data. What kinds of data files can I import?</h3>
|
||||
<div>TSV, CSV, *SV, Excel (.xls and .xlsx), JSON, XML, RDF as XML, and
|
||||
Google Data documents are all supported. Support for other formats can
|
||||
be added with Google Refine extensions.
|
||||
be added with OpenRefine extensions.
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -1,7 +1,7 @@
|
||||
<form id="project-upload-form" method="post" enctype="multipart/form-data" action="command/core/import-project" accept-charset="UTF-8">
|
||||
<div class="grid-layout layout-normal"><table>
|
||||
<tr>
|
||||
<td colspan="2">Locate an existing Google Refine project file (.tar or .tar.gz):</td>
|
||||
<td colspan="2">Locate an existing Refine project file (.tar or .tar.gz):</td>
|
||||
<tr>
|
||||
<td>Project file:</th>
|
||||
<td><input type="file" id="project-tar-file-input" name="project-file" /></td>
|
||||
|
@ -144,7 +144,7 @@ function initializeUI(uiState) {
|
||||
}
|
||||
|
||||
Refine.setTitle = function(status) {
|
||||
var title = theProject.metadata.name + " - Google Refine";
|
||||
var title = theProject.metadata.name + " - OpenRefine";
|
||||
if (status) {
|
||||
title = status + " - " + title;
|
||||
}
|
||||
|
@ -166,7 +166,7 @@ ExporterManager.handlers.exportProject = function() {
|
||||
$(form)
|
||||
.css("display", "none")
|
||||
.attr("method", "post")
|
||||
.attr("action", "command/core/export-project/" + name + ".google-refine.tar.gz")
|
||||
.attr("action", "command/core/export-project/" + name + ".openrefine.tar.gz")
|
||||
.attr("target", "refine-export");
|
||||
$('<input />')
|
||||
.attr("name", "project")
|
||||
|
@ -98,7 +98,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
display: block;
|
||||
}
|
||||
|
||||
#google-refine-version {
|
||||
#openrefine-version {
|
||||
margin: @padding_normal 0 0 0;
|
||||
color: @metadata_grey;
|
||||
font-size: 80%;
|
||||
|
54
refine
54
refine
@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
##########################################################
|
||||
# Google Refine Control System #
|
||||
# OpenRefine Control System #
|
||||
##########################################################
|
||||
|
||||
# -------------- utility functions ----------------------
|
||||
@ -31,10 +31,10 @@ where [options] include:
|
||||
|
||||
-h print this message and exit
|
||||
|
||||
-p <port> the port that Google Refine will listen to
|
||||
-p <port> the port that OpenRefine will listen to
|
||||
default: 3333
|
||||
|
||||
-i <interface> the host interface Google Refine should bind to
|
||||
-i <interface> the host interface OpenRefine should bind to
|
||||
default: 127.0.0.1
|
||||
|
||||
-w <path> path to the webapp
|
||||
@ -49,7 +49,7 @@ where [options] include:
|
||||
-v <level> verbosity level [from low to high: error,warn,info,debug,trace]
|
||||
default: info
|
||||
|
||||
-x <name=value> additional configuration parameters to pass to Google Refine
|
||||
-x <name=value> additional configuration parameters to pass to OpenRefine
|
||||
default: [none]
|
||||
|
||||
--debug enable JVM debugging (on port 8000)
|
||||
@ -58,22 +58,22 @@ where [options] include:
|
||||
|
||||
and <action> is one of
|
||||
|
||||
build ............................... Build Google Refine
|
||||
run ................................. Run Google Refine [default]
|
||||
build ............................... Build OpenRefine
|
||||
run ................................. Run OpenRefine [default]
|
||||
|
||||
test ................................ Run all Google Refine tests
|
||||
test ................................ Run all OpenRefine tests
|
||||
server_test ......................... Run only the server tests
|
||||
ui_test ............................. Run only the UI tests
|
||||
|
||||
broker .............................. Run Google Refine Broker
|
||||
broker .............................. Run OpenRefine Broker
|
||||
|
||||
broker_appengine_run <id> <ver> ..... Run Google Refine Broker for Google App Engine in local server
|
||||
broker_appengine_upload <id> <ver> .. Upload Google Refine to Google App Engine
|
||||
broker_appengine_run <id> <ver> ..... Run OpenRefine Broker for Google App Engine in local server
|
||||
broker_appengine_upload <id> <ver> .. Upload OpenRefine to Google App Engine
|
||||
|
||||
findbugs ............................ Run Findbugs against Google Refine
|
||||
pmd ................................. Run PMD against Google Refine
|
||||
cpd ................................. Run Copy/Paste Detection against Google Refine
|
||||
jslint .............................. Run JSlint against Google Refine
|
||||
findbugs ............................ Run Findbugs against OpenRefine
|
||||
pmd ................................. Run PMD against OpenRefine
|
||||
cpd ................................. Run Copy/Paste Detection against OpenRefine
|
||||
jslint .............................. Run JSlint against OpenRefine
|
||||
|
||||
whitespace <extension> .............. Normalize whitespace in files with the given extension
|
||||
|
||||
@ -148,7 +148,7 @@ check_pywin32() {
|
||||
check_running() {
|
||||
check_downloaders
|
||||
URL="http://${REFINE_HOST}:${REFINE_PORT}/"
|
||||
CHECK_STR="<title>Google Refine</title>"
|
||||
CHECK_STR="<title>OpenRefine</title>"
|
||||
|
||||
if [ "$CURL" ] ; then
|
||||
curl -s -S $URL > /dev/null 2>&1
|
||||
@ -170,7 +170,7 @@ check_running() {
|
||||
fi
|
||||
|
||||
if [ -z "${RUNNING}" ] ; then
|
||||
error "Something is already running on $URL but doesn't seem to be Google Refine. Maybe a proxy issue?"
|
||||
error "Something is already running on $URL but doesn't seem to be OpenRefine. Maybe a proxy issue?"
|
||||
fi
|
||||
else
|
||||
RUNNING=""
|
||||
@ -256,9 +256,9 @@ load_data() {
|
||||
CURL="`which curl 2> /dev/null`"
|
||||
|
||||
if [ -z "$CURL" ] ; then
|
||||
error "We need 'curl' present in PATH to upload data to Google Refine."
|
||||
error "We need 'curl' present in PATH to upload data to OpenRefine."
|
||||
else
|
||||
curl -s -F "project-file=@$FILE" -F "project-name=$NAME" $URL > /dev/null || error "Error while uploading $FILE to Google Refine"
|
||||
curl -s -F "project-file=@$FILE" -F "project-name=$NAME" $URL > /dev/null || error "Error while uploading $FILE to OpenRefine"
|
||||
echo "Loaded $FILE as $NAME"
|
||||
fi
|
||||
}
|
||||
@ -471,7 +471,7 @@ dist() {
|
||||
echo "with"
|
||||
echo
|
||||
echo " {"
|
||||
echo " \"description\": \"Google Refine ${VERSION}\","
|
||||
echo " \"description\": \"OpenRefine ${VERSION}\","
|
||||
echo " \"version\": \"${VERSION}\","
|
||||
echo " \"revision\": \"${REVISION}\""
|
||||
echo " },"
|
||||
@ -517,7 +517,7 @@ mac_dist() {
|
||||
rm "$REFINE_BUILD_DIR/temp_refine.dmg"
|
||||
fi
|
||||
|
||||
TITLE="Google Refine $VERSION"
|
||||
TITLE="OpenRefine $VERSION"
|
||||
echo "Building MacOSX DMG for $TITLE"
|
||||
hdiutil create -srcfolder "$REFINE_BUILD_DIR/mac" -volname "$TITLE" -fs HFS+ -fsargs "-c c=64,a=16,e=16" -format UDRW -size ${SIZE}m "$REFINE_BUILD_DIR/temp_refine.dmg" || error "can't create empty DMG"
|
||||
DEVICE=`hdiutil attach -readwrite -noverify -noautoopen "$REFINE_BUILD_DIR/temp_refine.dmg" | egrep '^/dev/' | sed 1q | awk '{print $1}'`
|
||||
@ -536,7 +536,7 @@ mac_dist() {
|
||||
set icon size of theViewOptions to 100
|
||||
set background picture of theViewOptions to file ".background:dmg_background.png"
|
||||
make new alias file at container window to POSIX file "/Applications" with properties {name:"Applications"}
|
||||
set position of item "Google Refine" of container window to {170, 175}
|
||||
set position of item "OpenRefine" of container window to {170, 175}
|
||||
set position of item "Applications" of container window to {380, 175}
|
||||
close
|
||||
open
|
||||
@ -577,7 +577,7 @@ ui_test() {
|
||||
|
||||
run fork
|
||||
|
||||
echo "Waiting for Google Refine to load..."
|
||||
echo "Waiting for OpenRefine to load..."
|
||||
sleep 5
|
||||
check_running
|
||||
if [ -z "$RUNNING" ] ; then
|
||||
@ -598,7 +598,7 @@ ui_test() {
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Killing Google Refine"
|
||||
echo "Killing OpenRefine"
|
||||
/bin/kill -9 $REFINE_PID
|
||||
echo "Cleaning up"
|
||||
rm -rf $REFINE_DATA_DIR
|
||||
@ -630,7 +630,7 @@ run() {
|
||||
check_running
|
||||
|
||||
if [ "$RUNNING" ] ; then
|
||||
warn "Google Refine is already running."
|
||||
warn "OpenRefine is already running."
|
||||
fi
|
||||
|
||||
if [ ! -d $REFINE_CLASSES_DIR ] ; then
|
||||
@ -672,7 +672,7 @@ run() {
|
||||
#echo "$RUN_CMD"
|
||||
#echo ""
|
||||
|
||||
echo "Starting Google Refine at 'http://${REFINE_HOST}:${REFINE_PORT}/'"
|
||||
echo "Starting OpenRefine at 'http://${REFINE_HOST}:${REFINE_PORT}/'"
|
||||
echo ""
|
||||
|
||||
if [ -z "$FORK" ] ; then
|
||||
@ -715,7 +715,7 @@ broker_run() {
|
||||
#echo "$RUN_CMD"
|
||||
#echo ""
|
||||
|
||||
echo "Starting Google Refine Broker at 'http://${REFINE_HOST}:${REFINE_PORT}/'"
|
||||
echo "Starting OpenRefine Broker at 'http://${REFINE_HOST}:${REFINE_PORT}/'"
|
||||
echo ""
|
||||
|
||||
if [ -z "$FORK" ] ; then
|
||||
@ -856,7 +856,7 @@ fi
|
||||
|
||||
JAVA_VERSION=`$JAVA -version 2>&1 | grep version | cut -d ' ' -f 3 | egrep '^\"1\.(6|7)'`
|
||||
if [ -z "$JAVA_VERSION" ] ; then
|
||||
error "Google Refine requires Java version 6 or later. If you have multiple versions of Java installed, please set the environment variable JAVA_HOME to the correct version."
|
||||
error "OpenRefine requires Java version 6 or later. If you have multiple versions of Java installed, please set the environment variable JAVA_HOME to the correct version."
|
||||
fi
|
||||
|
||||
# ----- Parse the command line args ------------------------------------------
|
||||
|
382
refine.bat
382
refine.bat
@ -1,191 +1,191 @@
|
||||
@echo off
|
||||
rem
|
||||
rem Configuration variables
|
||||
rem
|
||||
rem ANT_HOME
|
||||
rem Home of Ant installation; copy is in the source as tools\apache-ant-*
|
||||
rem
|
||||
rem JAVA_HOME
|
||||
rem Home of Java installation.
|
||||
rem
|
||||
rem JAVA_OPTIONS
|
||||
rem Extra options to pass to the JVM
|
||||
rem
|
||||
|
||||
if "%OS%"=="Windows_NT" @setlocal
|
||||
if "%OS%"=="WINNT" @setlocal
|
||||
|
||||
rem --- First two utilities for exiting --------------------------------------------
|
||||
|
||||
goto endUtils
|
||||
|
||||
:usage
|
||||
echo Usage %0 [options] ^<action^>
|
||||
echo where [options] include:
|
||||
echo.
|
||||
echo /? print this message and exit
|
||||
echo.
|
||||
echo /p <port> the port that Google Refine will listen to
|
||||
echo default: 3333
|
||||
echo.
|
||||
echo /i <interface> the host interface Google Refine should bind to
|
||||
echo default: 127.0.0.1
|
||||
echo.
|
||||
echo /w <path> path to the webapp
|
||||
echo default src\main\webapp
|
||||
echo.
|
||||
echo /d enable JVM debugging (on port 8000)
|
||||
echo.
|
||||
echo /m <memory> max memory heap size to use
|
||||
echo default: 1024M
|
||||
echo.
|
||||
echo /x enable JMX monitoring (for jconsole and friends)
|
||||
echo.
|
||||
echo and <action> is one of
|
||||
echo.
|
||||
echo build ..................... Build Google Refine
|
||||
echo run ....................... Run Google Refine
|
||||
echo.
|
||||
echo clean ..................... Clean compiled classes
|
||||
echo distclean ................. Remove all generated files
|
||||
echo.
|
||||
goto end
|
||||
|
||||
:fail
|
||||
echo Type 'refine /h' for usage.
|
||||
goto end
|
||||
|
||||
:endUtils
|
||||
|
||||
rem --- Read ini file -----------------------------------------------
|
||||
|
||||
set OPTS=
|
||||
|
||||
for /f "tokens=1,* delims==" %%a in (refine.ini) do (
|
||||
set %%a=%%b
|
||||
)
|
||||
|
||||
rem --- Check JAVA_HOME ---------------------------------------------
|
||||
|
||||
if not "%JAVA_HOME%" == "" goto gotJavaHome
|
||||
echo You must set JAVA_HOME to point at your Java Development Kit installation
|
||||
echo.
|
||||
echo If you don't know how to do this, follow the instructions at
|
||||
echo.
|
||||
echo http://bit.ly/1c2gkR
|
||||
echo.
|
||||
|
||||
goto fail
|
||||
:gotJavaHome
|
||||
|
||||
rem --- Argument parsing --------------------------------------------
|
||||
|
||||
:loop
|
||||
if ""%1"" == """" goto endArgumentParsing
|
||||
if ""%1"" == ""/h"" goto usage
|
||||
if ""%1"" == ""/?"" goto usage
|
||||
if ""%1"" == ""/p"" goto arg-p
|
||||
if ""%1"" == ""/i"" goto arg-i
|
||||
if ""%1"" == ""/w"" goto arg-w
|
||||
if ""%1"" == ""/d"" goto arg-d
|
||||
if ""%1"" == ""/m"" goto arg-m
|
||||
if ""%1"" == ""/x"" goto arg-x
|
||||
goto endArgumentParsing
|
||||
|
||||
:arg-p
|
||||
set REFINE_PORT=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-i
|
||||
set REFINE_HOST=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-w
|
||||
set REFINE_WEBAPP=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-m
|
||||
set REFINE_MEMORY=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-d
|
||||
set OPTS=%OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
|
||||
goto shift2loop
|
||||
|
||||
:arg-x
|
||||
set OPTS=%OPTS% -Dcom.sun.management.jmxremote
|
||||
goto shift2loop
|
||||
|
||||
:shift2loop
|
||||
shift
|
||||
shift
|
||||
goto loop
|
||||
|
||||
:endArgumentParsing
|
||||
|
||||
rem --- Fold in Environment Vars --------------------------------------------
|
||||
|
||||
if not "%JAVA_OPTIONS%" == "" goto gotJavaOptions
|
||||
set JAVA_OPTIONS=
|
||||
:gotJavaOptions
|
||||
set OPTS=%OPTS% %JAVA_OPTIONS%
|
||||
|
||||
if not "%REFINE_MEMORY%" == "" goto gotMemory
|
||||
set REFINE_MEMORY=1024M
|
||||
:gotMemory
|
||||
set OPTS=%OPTS% -Xms256M -Xmx%REFINE_MEMORY% -Drefine.memory=%REFINE_MEMORY%
|
||||
|
||||
if not "%REFINE_PORT%" == "" goto gotPort
|
||||
set REFINE_PORT=3333
|
||||
:gotPort
|
||||
set OPTS=%OPTS% -Drefine.port=%REFINE_PORT%
|
||||
|
||||
if not "%REFINE_HOST%" == "" goto gotHost
|
||||
set REFINE_HOST=127.0.0.1
|
||||
:gotHost
|
||||
set OPTS=%OPTS% -Drefine.host=%REFINE_HOST%
|
||||
|
||||
if not "%REFINE_WEBAPP%" == "" goto gotWebApp
|
||||
set REFINE_WEBAPP=main\webapp
|
||||
:gotWebApp
|
||||
set OPTS=%OPTS% -Drefine.webapp=%REFINE_WEBAPP%
|
||||
|
||||
if not "%REFINE_CLASSES_DIR%" == "" goto gotClassesDir
|
||||
set REFINE_CLASSES_DIR=server\classes
|
||||
:gotClassesDir
|
||||
|
||||
if not "%REFINE_LIB_DIR%" == "" goto gotLibDir
|
||||
set REFINE_LIB_DIR=server\lib
|
||||
:gotLibDir
|
||||
|
||||
rem ----- Respond to the action ----------------------------------------------------------
|
||||
|
||||
set ACTION=%1
|
||||
|
||||
if ""%ACTION%"" == ""build"" goto doAnt
|
||||
if ""%ACTION%"" == ""clean"" goto doAnt
|
||||
if ""%ACTION%"" == ""distclean"" goto doAnt
|
||||
if ""%ACTION%"" == ""run"" goto doRun
|
||||
|
||||
:doRun
|
||||
set CLASSPATH="%REFINE_CLASSES_DIR%;%REFINE_LIB_DIR%\*"
|
||||
"%JAVA_HOME%\bin\java.exe" -cp %CLASSPATH% %OPTS% -Djava.library.path=%REFINE_LIB_DIR%/native/windows com.google.refine.Refine
|
||||
goto end
|
||||
|
||||
:doAnt
|
||||
if not "%ANT_HOME%" == "" goto gotAntHome
|
||||
echo You must have Apache Ant installed and the ANT_HOME environment variable to point to it
|
||||
echo.
|
||||
echo You can download it from
|
||||
echo.
|
||||
echo http://ant.apache.org/
|
||||
echo.
|
||||
echo If you don't know how to set environment variables, follow the instructions at
|
||||
echo.
|
||||
echo http://bit.ly/1c2gkR
|
||||
echo.
|
||||
:gotAntHome
|
||||
"%ANT_HOME%\bin\ant.bat" -f build.xml %ACTION%
|
||||
goto end
|
||||
|
||||
:end
|
||||
@echo off
|
||||
rem
|
||||
rem Configuration variables
|
||||
rem
|
||||
rem ANT_HOME
|
||||
rem Home of Ant installation; copy is in the source as tools\apache-ant-*
|
||||
rem
|
||||
rem JAVA_HOME
|
||||
rem Home of Java installation.
|
||||
rem
|
||||
rem JAVA_OPTIONS
|
||||
rem Extra options to pass to the JVM
|
||||
rem
|
||||
|
||||
if "%OS%"=="Windows_NT" @setlocal
|
||||
if "%OS%"=="WINNT" @setlocal
|
||||
|
||||
rem --- First two utilities for exiting --------------------------------------------
|
||||
|
||||
goto endUtils
|
||||
|
||||
:usage
|
||||
echo Usage %0 [options] ^<action^>
|
||||
echo where [options] include:
|
||||
echo.
|
||||
echo /? print this message and exit
|
||||
echo.
|
||||
echo /p <port> the port that OpenRefine will listen to
|
||||
echo default: 3333
|
||||
echo.
|
||||
echo /i <interface> the host interface OpenRefine should bind to
|
||||
echo default: 127.0.0.1
|
||||
echo.
|
||||
echo /w <path> path to the webapp
|
||||
echo default src\main\webapp
|
||||
echo.
|
||||
echo /d enable JVM debugging (on port 8000)
|
||||
echo.
|
||||
echo /m <memory> max memory heap size to use
|
||||
echo default: 1024M
|
||||
echo.
|
||||
echo /x enable JMX monitoring (for jconsole and friends)
|
||||
echo.
|
||||
echo and <action> is one of
|
||||
echo.
|
||||
echo build ..................... Build OpenRefine
|
||||
echo run ....................... Run OpenRefine
|
||||
echo.
|
||||
echo clean ..................... Clean compiled classes
|
||||
echo distclean ................. Remove all generated files
|
||||
echo.
|
||||
goto end
|
||||
|
||||
:fail
|
||||
echo Type 'refine /h' for usage.
|
||||
goto end
|
||||
|
||||
:endUtils
|
||||
|
||||
rem --- Read ini file -----------------------------------------------
|
||||
|
||||
set OPTS=
|
||||
|
||||
for /f "tokens=1,* delims==" %%a in (refine.ini) do (
|
||||
set %%a=%%b
|
||||
)
|
||||
|
||||
rem --- Check JAVA_HOME ---------------------------------------------
|
||||
|
||||
if not "%JAVA_HOME%" == "" goto gotJavaHome
|
||||
echo You must set JAVA_HOME to point at your Java Development Kit installation
|
||||
echo.
|
||||
echo If you don't know how to do this, follow the instructions at
|
||||
echo.
|
||||
echo http://bit.ly/1c2gkR
|
||||
echo.
|
||||
|
||||
goto fail
|
||||
:gotJavaHome
|
||||
|
||||
rem --- Argument parsing --------------------------------------------
|
||||
|
||||
:loop
|
||||
if ""%1"" == """" goto endArgumentParsing
|
||||
if ""%1"" == ""/h"" goto usage
|
||||
if ""%1"" == ""/?"" goto usage
|
||||
if ""%1"" == ""/p"" goto arg-p
|
||||
if ""%1"" == ""/i"" goto arg-i
|
||||
if ""%1"" == ""/w"" goto arg-w
|
||||
if ""%1"" == ""/d"" goto arg-d
|
||||
if ""%1"" == ""/m"" goto arg-m
|
||||
if ""%1"" == ""/x"" goto arg-x
|
||||
goto endArgumentParsing
|
||||
|
||||
:arg-p
|
||||
set REFINE_PORT=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-i
|
||||
set REFINE_HOST=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-w
|
||||
set REFINE_WEBAPP=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-m
|
||||
set REFINE_MEMORY=%2
|
||||
goto shift2loop
|
||||
|
||||
:arg-d
|
||||
set OPTS=%OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n
|
||||
goto shift2loop
|
||||
|
||||
:arg-x
|
||||
set OPTS=%OPTS% -Dcom.sun.management.jmxremote
|
||||
goto shift2loop
|
||||
|
||||
:shift2loop
|
||||
shift
|
||||
shift
|
||||
goto loop
|
||||
|
||||
:endArgumentParsing
|
||||
|
||||
rem --- Fold in Environment Vars --------------------------------------------
|
||||
|
||||
if not "%JAVA_OPTIONS%" == "" goto gotJavaOptions
|
||||
set JAVA_OPTIONS=
|
||||
:gotJavaOptions
|
||||
set OPTS=%OPTS% %JAVA_OPTIONS%
|
||||
|
||||
if not "%REFINE_MEMORY%" == "" goto gotMemory
|
||||
set REFINE_MEMORY=1024M
|
||||
:gotMemory
|
||||
set OPTS=%OPTS% -Xms256M -Xmx%REFINE_MEMORY% -Drefine.memory=%REFINE_MEMORY%
|
||||
|
||||
if not "%REFINE_PORT%" == "" goto gotPort
|
||||
set REFINE_PORT=3333
|
||||
:gotPort
|
||||
set OPTS=%OPTS% -Drefine.port=%REFINE_PORT%
|
||||
|
||||
if not "%REFINE_HOST%" == "" goto gotHost
|
||||
set REFINE_HOST=127.0.0.1
|
||||
:gotHost
|
||||
set OPTS=%OPTS% -Drefine.host=%REFINE_HOST%
|
||||
|
||||
if not "%REFINE_WEBAPP%" == "" goto gotWebApp
|
||||
set REFINE_WEBAPP=main\webapp
|
||||
:gotWebApp
|
||||
set OPTS=%OPTS% -Drefine.webapp=%REFINE_WEBAPP%
|
||||
|
||||
if not "%REFINE_CLASSES_DIR%" == "" goto gotClassesDir
|
||||
set REFINE_CLASSES_DIR=server\classes
|
||||
:gotClassesDir
|
||||
|
||||
if not "%REFINE_LIB_DIR%" == "" goto gotLibDir
|
||||
set REFINE_LIB_DIR=server\lib
|
||||
:gotLibDir
|
||||
|
||||
rem ----- Respond to the action ----------------------------------------------------------
|
||||
|
||||
set ACTION=%1
|
||||
|
||||
if ""%ACTION%"" == ""build"" goto doAnt
|
||||
if ""%ACTION%"" == ""clean"" goto doAnt
|
||||
if ""%ACTION%"" == ""distclean"" goto doAnt
|
||||
if ""%ACTION%"" == ""run"" goto doRun
|
||||
|
||||
:doRun
|
||||
set CLASSPATH="%REFINE_CLASSES_DIR%;%REFINE_LIB_DIR%\*"
|
||||
"%JAVA_HOME%\bin\java.exe" -cp %CLASSPATH% %OPTS% -Djava.library.path=%REFINE_LIB_DIR%/native/windows com.google.refine.Refine
|
||||
goto end
|
||||
|
||||
:doAnt
|
||||
if not "%ANT_HOME%" == "" goto gotAntHome
|
||||
echo You must have Apache Ant installed and the ANT_HOME environment variable to point to it
|
||||
echo.
|
||||
echo You can download it from
|
||||
echo.
|
||||
echo http://ant.apache.org/
|
||||
echo.
|
||||
echo If you don't know how to set environment variables, follow the instructions at
|
||||
echo.
|
||||
echo http://bit.ly/1c2gkR
|
||||
echo.
|
||||
:gotAntHome
|
||||
"%ANT_HOME%\bin\ant.bat" -f build.xml %ACTION%
|
||||
goto end
|
||||
|
||||
:end
|
||||
|
@ -1,4 +1,4 @@
|
||||
#Mon Sep 27 15:02:58 PDT 2010
|
||||
eclipse.preferences.version=1
|
||||
formatter_profile=_Google Refine
|
||||
formatter_profile=_OpenRefine
|
||||
formatter_settings_version=11
|
||||
|
@ -91,7 +91,7 @@ public class Refine {
|
||||
// tell macosx to keep the menu associated with the screen and what the app title is
|
||||
System.setProperty("apple.laf.useScreenMenuBar", "true");
|
||||
System.setProperty("com.apple.eawt.CocoaComponent.CompatibilityMode", "false");
|
||||
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "Google Refine");
|
||||
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "OpenRefine");
|
||||
|
||||
// tell the signpost library to log
|
||||
//System.setProperty("debug","true");
|
||||
@ -351,6 +351,7 @@ class RefineServer extends Server {
|
||||
// on macosx, use "~/Library/Application Support"
|
||||
String home = System.getProperty("user.home");
|
||||
|
||||
// TODO: Update needed (again)
|
||||
String data_home = (home != null) ? home + "/Library/Application Support/Google/Refine" : ".google-refine";
|
||||
dataDir = new File(data_home);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user