@groovy.transform.CompileStatic @org.springframework.web.bind.annotation.RestController class NCubeController extends java.lang.Object
NCubeController API.
Modifiers | Name | Description |
---|---|---|
static class |
NCubeController.BranchComparator |
Comparator for comparing branches, which places 'HEAD' always first. |
static class |
NCubeController.VersionComparator |
Version number Comparator that compares Strings with version number - status like 1.0.1-RELEASE to 1.2.0-SNAPSHOT. |
Modifiers | Name | Description |
---|---|---|
private static java.lang.String |
EXECUTE_ERROR |
|
private static java.util.regex.Pattern |
IS_NUMBER_REGEX |
|
private static org.slf4j.Logger |
LOG |
|
private static java.util.Map |
NO_CELL |
|
private static java.util.regex.Pattern |
NO_QUOTES_REGEX |
|
private java.lang.Object |
allowExecute |
|
private static java.util.concurrent.ConcurrentMap<java.lang.String, java.util.concurrent.ConcurrentSkipListSet<java.lang.String>> |
appBranches |
|
private static java.util.concurrent.ConcurrentMap<java.lang.String, java.util.concurrent.ConcurrentSkipListSet<java.lang.String>> |
appCache |
|
private static java.util.concurrent.ConcurrentMap<java.lang.String, java.util.concurrent.ConcurrentSkipListSet<java.lang.String>> |
appVersions |
|
private static java.lang.String |
inetHostname |
|
private org.springframework.boot.actuate.endpoint.MetricsEndpoint |
metricsEndpoint |
|
private NCubeMutableClient |
mutableClient |
|
private static com.google.common.util.concurrent.AtomicDouble |
processLoadPeak |
|
private static java.lang.String |
servletHostname |
|
private static com.google.common.util.concurrent.AtomicDouble |
systemLoadPeak |
Constructor and description |
---|
NCubeController
(NCubeMutableClient mutableClient, boolean allowExecute) |
Type Params | Return Type | Name and description |
---|---|---|
|
java.lang.Integer |
acceptMine(ApplicationID appId, java.lang.Object[] cubeNames, java.lang.String sourceBranch = ApplicationID.HEAD) |
|
java.lang.Integer |
acceptTheirs(ApplicationID appId, java.lang.Object[] cubeNames, java.lang.String sourceBranch) |
|
private void |
addAllToAppCache(java.lang.String tenant, java.util.List<java.lang.String> appNames) |
|
private static void |
addAllToVersionCache(java.lang.String app, java.lang.Object[] versions) |
|
void |
addAxis(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName, java.lang.String type, java.lang.String valueType) Add axis to an existing SNAPSHOT n-cube. |
|
void |
addAxis(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName, ApplicationID refAppId, java.lang.String refCubeName, java.lang.String refAxisName, ApplicationID transformAppId, java.lang.String transformCubeName) Add axis to an existing SNAPSHOT n-cube that is a reference to an axis in another cube. |
|
private static void |
addBranchToCache(ApplicationID appId) |
|
private static void |
addBranchesToCache(ApplicationID appId, java.util.Collection<java.lang.String> branches) |
|
private ApplicationID |
addTenant(ApplicationID appId) |
|
private void |
addToAppCache(java.lang.String tenant, java.lang.String appName) |
|
private static void |
addToVersionsCache(ApplicationID appId) |
|
void |
breakAxisReference(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName) |
|
NCube |
cancelPullRequest(java.lang.String prId) |
|
private static java.lang.Object[] |
caseInsensitiveSort(java.lang.Object[] items) |
|
void |
changeVersionValue(ApplicationID appId, java.lang.String newSnapVer) Change the SNAPSHOT version number of an n-cube. |
|
java.util.Map |
checkPermissions(ApplicationID appId, java.lang.String resource, java.lang.Object[] actions) |
|
private static java.lang.String |
cleanKey(java.lang.String key) |
|
private void |
clearAppCache(java.lang.String tenant) |
|
private static java.lang.Object |
clearBranchCache(ApplicationID appId) |
|
void |
clearCache(ApplicationID appId) |
|
java.lang.Boolean |
clearDefaultCell(ApplicationID appId, java.lang.String cubeName) |
|
void |
clearTestDatabase() |
|
private static void |
clearVersionCache(java.lang.String app) |
|
private static java.util.Map |
columnToMap(Column col) |
|
java.lang.Object |
commitBranch(ApplicationID appId, java.lang.Object[] infoDtos) |
|
java.lang.Object |
commitCube(ApplicationID appId, java.lang.String cubeName) |
|
static java.util.Map |
convertAxis(Axis axis) Convert Axis to Map of Map representation (using json-io) and modify the column ID to a String in the process. |
|
private static java.lang.Object |
convertStringToValue(java.lang.String origValue) |
|
java.lang.Integer |
copyBranch(ApplicationID srcAppId, ApplicationID targetAppId, boolean copyWithHistory = false) |
|
java.lang.String |
copyCells(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] ids, boolean isCut) |
|
void |
createBranch(ApplicationID appId) |
|
void |
createCube(ApplicationID appId, java.lang.String cubeName) Create an n-cube (SNAPSHOT only) for non-Java clients. |
|
void |
createCube(NCube ncube) Create an n-cube (SNAPSHOT only) for Java clients. |
|
NCubeTest |
createNewTest(ApplicationID appId, java.lang.String cubeName, java.lang.String testName) |
|
void |
deleteAxis(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName) Delete the passed in axis. |
|
java.lang.Boolean |
deleteBranch(ApplicationID appId) |
|
java.lang.Boolean |
deleteCubes(ApplicationID appId, java.lang.Object[] cubeNames) Delete an n-cube (SNAPSHOT only). |
|
java.lang.Boolean |
duplicate(ApplicationID appId, ApplicationID destAppId, java.lang.String cubeName, java.lang.String newName) Duplicate the passed in cube, but change the name to newName AND the status of the new n-cube will be SNAPSHOT. |
|
java.util.Map |
execute(ApplicationID appId, java.lang.String cubeName, java.lang.String method, java.util.Map args) |
|
java.util.List<Delta> |
fetchJsonBranchDiffs(NCubeInfoDto newInfoDto, NCubeInfoDto oldInfoDto) |
|
java.util.List<Delta> |
fetchJsonRevDiffs(long newCubeId, long oldCubeId) |
|
private static java.lang.String |
formatCube(NCube ncube, java.util.Map options) |
|
java.lang.String |
generatePullRequestHash(ApplicationID appId, java.lang.Object[] infoDtos) |
|
private java.util.Set<java.lang.String> |
getAppCache(java.lang.String tenant) |
|
java.lang.String |
getAppLockedBy(ApplicationID appId) |
|
java.lang.Object[] |
getAppNames() |
|
java.lang.Object[] |
getAppVersions(java.lang.String app) |
|
java.lang.Object[] |
getAppVersions(java.lang.String app, java.lang.String status) |
|
private static java.lang.Object |
getAttribute(javax.management.MBeanServer mbs, java.lang.String beanName, java.lang.String attribute) |
|
java.util.Map |
getAxis(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName) Return the requested axis. |
|
java.util.Map |
getAxisMetaProperties(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName) |
|
private static java.util.Set<java.lang.String> |
getBranchCache(java.lang.String key) |
|
private static java.lang.String |
getBranchCacheKey(ApplicationID appId) |
|
java.lang.Object[] |
getBranchChangesForHead(ApplicationID appId) |
|
java.lang.Object[] |
getBranchChangesForMyBranch(ApplicationID appId, java.lang.String branch) |
|
java.lang.Integer |
getBranchCount(ApplicationID appId) |
|
java.lang.Object[] |
getBranches(ApplicationID appId) |
|
private static java.lang.Object[] |
getBranchesFromCache(ApplicationID appId) Branch cache management |
|
private java.lang.Object[] |
getCachedApps(java.lang.String tenant) App cache Management |
|
private java.lang.Object[] |
getCachedVersions(java.lang.String app) Versions Cache Management |
|
java.util.Map |
getCell(ApplicationID appId, java.lang.String cubeName, java.util.Map coordinate, java.lang.Object defaultValue = null) |
|
java.lang.Object[] |
getCellAnnotation(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] ids, boolean ignoreVersion = false) |
|
java.util.Map |
getCellCoordinate(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] ids) |
|
java.lang.Object |
getCellNoExecute(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] ids) |
|
java.lang.Object |
getCellNoExecuteByCoordinate(ApplicationID appId, java.lang.String cubeName, java.util.Map coordinate) |
|
java.lang.Object[] |
getCellsNoExecute(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] idArrays) This API will fetch particular cell values (identified by the idArrays) for the passed in appId and named cube. |
|
java.util.Map |
getColumnMetaProperties(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName, long colId) |
|
private static java.util.Set<java.lang.Long> |
getCoordinate(java.lang.Object[] ids) |
|
NCube |
getCube(ApplicationID appId, java.lang.String cubeName) |
|
java.util.Map |
getCubeMetaProperties(ApplicationID appId, java.lang.String cubeName) |
|
private static java.util.List<NCube> |
getCubes(java.lang.String json) |
|
java.lang.Object |
getDefaultCell(ApplicationID appId, java.lang.String cubeName) |
|
java.lang.Object[] |
getHeadChangesForBranch(ApplicationID appId) |
|
java.util.Map |
getHeaders() @return Map of HTTP headers for debugging display. |
|
java.lang.String |
getHtml(ApplicationID appId, java.lang.String cubeName) |
|
private static java.lang.String |
getInetHostname() |
|
java.lang.String |
getJson(ApplicationID appId, java.lang.String cubeName) |
|
java.lang.String |
getJson(ApplicationID appId, java.lang.String cubeName, java.util.Map options) |
|
java.util.Map |
getMenu(ApplicationID appId) |
|
java.lang.String |
getNotes(ApplicationID appId, java.lang.String cubeName) |
|
java.lang.Object[] |
getPullRequests(java.util.Date startDate, java.util.Date endDate) |
|
java.lang.Object[] |
getReferenceAxes(ApplicationID appId) |
|
java.lang.Object[] |
getReferencesFrom(ApplicationID appId, java.lang.String cubeName) Find all references from (out going) an n-cube. |
|
java.lang.Object[] |
getRequiredScope(ApplicationID appId, java.lang.String cubeName) Find all referenced input variables for a given n-cube (and through any n-cubes it references). |
|
java.lang.Object[] |
getRevisionHistory(ApplicationID appId, java.lang.String cubeName, boolean ignoreVersion = false) |
|
java.lang.Integer |
getSearchCount(ApplicationID appId, java.lang.String cubeNamePattern = null, java.lang.String content = null, java.util.Map options = [(SEARCH_ACTIVE_RECORDS_ONLY) |
|
private static java.lang.String |
getServletHostname() |
|
private java.lang.String |
getTenant() |
|
java.lang.Object[] |
getTests(ApplicationID appId, java.lang.String cubeName) |
|
protected java.lang.String |
getUserForDatabase() |
|
private static java.lang.String |
getValueRepeatIfNecessary(java.lang.Object[] values, int row, int col) |
|
java.lang.Object[] |
getVersions(java.lang.String app) |
|
private static java.util.Set<java.lang.String> |
getVersionsCache(java.lang.String app) |
|
private Visualizer |
getVisualizer(java.lang.String cubeName) |
|
java.util.Map<java.lang.String, java.lang.Object> |
getVisualizerGraph(ApplicationID appId, java.util.Map options) |
|
java.util.Map<java.lang.String, java.lang.Object> |
getVisualizerNodeDetails(ApplicationID appId, java.util.Map options) |
|
java.util.Map<java.lang.String, java.lang.Object> |
getVisualizerScopeChange(ApplicationID appId, java.util.Map options) |
|
java.util.Map |
heartBeat(java.util.Map openCubes, boolean showAll = false) |
|
java.lang.Boolean |
isAppAdmin(ApplicationID appId) |
|
java.lang.Boolean |
isAppLocked(ApplicationID appId) |
|
java.lang.Boolean |
isCubeUpToDate(ApplicationID appId, java.lang.String cubeName) |
|
static boolean |
isNumeric(java.lang.String str) |
|
private NCube |
loadCube(ApplicationID appId, java.lang.String ncubeName) |
|
java.lang.String |
loadCubeById(ApplicationID appId, long id, java.lang.String mode) |
|
NCube |
loadCubeById(long id) |
|
java.lang.Boolean |
lockApp(ApplicationID appId, boolean shouldLock) |
|
java.util.Map |
mapReduce(ApplicationID appId, java.lang.String cubeName, java.lang.String rowAxisName, java.lang.String colAxisName, java.lang.String where = 'true', java.util.Map input = [:], java.util.Map output = [:], java.util.Set columnsToSearch = as Set, java.util.Set columnsToReturn = as Set) |
|
NCube |
mergeDeltas(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] deltas) |
|
java.lang.Object |
mergePullRequest(java.lang.String prId) |
|
java.lang.Integer |
moveBranch(ApplicationID appId, java.lang.String newSnapVer) |
|
java.lang.Boolean |
pasteCells(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] values, java.lang.Object[] coords) |
|
java.lang.Boolean |
pasteCellsNce(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] clipboard) |
|
void |
promoteRevision(long cubeId) |
|
private static void |
putIfNotNull(java.util.Map map, java.lang.String key, java.lang.Object value) |
|
java.lang.Integer |
releaseCubes(ApplicationID appId, java.lang.String newSnapVer) Release the passed in SNAPSHOT version (update their status_cd to RELEASE), and then duplicate all the n-cubes in the release, creating new ones in SNAPSHOT status with the version number set to the newSnapVer. |
|
java.lang.Integer |
releaseVersion(ApplicationID appId, java.lang.String newSnapVer) |
|
private static void |
removeBranchFromCache(ApplicationID appId) |
|
private static java.lang.String |
removeCommas(java.lang.String str) |
|
java.lang.Boolean |
renameCube(ApplicationID appId, java.lang.String oldName, java.lang.String newName) |
|
NCube |
reopenPullRequest(java.lang.String prId) |
|
java.lang.String |
resolveRelativeUrl(ApplicationID appId, java.lang.String relativeUrl) |
|
java.lang.Boolean |
restoreCubes(ApplicationID appId, java.lang.Object[] cubeNames) |
|
java.lang.Integer |
rollbackBranch(ApplicationID appId, java.lang.Object[] cubeNames) |
|
java.util.Map |
runTest(ApplicationID appId, java.lang.String cubeName, NCubeTest test) |
|
java.util.Map |
runTests(ApplicationID appId) |
|
java.util.Map |
runTests(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] tests) |
|
void |
saveJson(ApplicationID appId, java.lang.String json) |
|
java.lang.Boolean |
saveTests(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] tests) |
|
java.lang.Object[] |
search(ApplicationID appId, java.lang.String cubeNamePattern = null, java.lang.String content = null, java.util.Map options = [(SEARCH_ACTIVE_RECORDS_ONLY) |
|
private static java.lang.String |
toHtmlWithColumnHints(NCube ncube) |
|
void |
updateAxis(ApplicationID appId, java.lang.String cubeName, java.lang.String origAxisName, java.lang.String axisName, boolean hasDefault, boolean isSorted, boolean fireAll) |
|
void |
updateAxisColumns(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName, java.lang.Object[] cols) Update an entire set of columns on an axis at one time. |
|
void |
updateAxisMetaProperties(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName, java.util.Map<java.lang.String, java.lang.Object> newMetaProperties) |
|
java.lang.Object |
updateBranch(ApplicationID appId, java.lang.Object[] cubeDtos) |
|
java.lang.Boolean |
updateCell(ApplicationID appId, java.lang.String cubeName, java.lang.Object[] ids, CellInfo cellInfo) In-place update of a cell. |
|
java.lang.Boolean |
updateCellAt(ApplicationID appId, java.lang.String cubeName, java.util.Map coordinate, CellInfo cellInfo) |
|
java.lang.Boolean |
updateColumnMetaProperties(ApplicationID appId, java.lang.String cubeName, java.lang.String axisName, long colId, java.util.Map<java.lang.String, java.lang.Object> newMetaProperties) |
|
java.lang.Boolean |
updateCube(NCube ncube) |
|
java.lang.Object |
updateCubeFromHead(ApplicationID appId, java.lang.String cubeName) |
|
java.lang.Boolean |
updateCubeMetaProperties(ApplicationID appId, java.lang.String cubeName, java.util.Map<java.lang.String, java.lang.Object> newMetaProperties) |
|
java.lang.Boolean |
updateDefaultCell(ApplicationID appId, java.lang.String cubeName, CellInfo cellInfo) |
|
java.lang.Boolean |
updateNotes(ApplicationID appId, java.lang.String cubeName, java.lang.String notes) |
|
void |
updateReferenceAxes(java.lang.Object[] axisRefs) |
|
private static java.util.Map<java.lang.String, CellInfo> |
valuesToCellInfo(java.util.Map<java.lang.String, java.lang.Object> metaProps) |
|
private void |
verifyAllowExecute(java.lang.String methodName) |
Methods inherited from class | Name |
---|---|
class java.lang.Object |
java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll() |
Add axis to an existing SNAPSHOT n-cube.
Add axis to an existing SNAPSHOT n-cube that is a reference to an axis in another cube.
Change the SNAPSHOT version number of an n-cube.
Convert Axis to Map of Map representation (using json-io) and modify the column ID to a String in the process. This allows the column ID to work on clients (like Javascript) that cannot support 64-bit values.
Create an n-cube (SNAPSHOT only) for non-Java clients.
Create an n-cube (SNAPSHOT only) for Java clients.
Delete the passed in axis.
Delete an n-cube (SNAPSHOT only).
Duplicate the passed in cube, but change the name to newName AND the status of the new n-cube will be SNAPSHOT.
Return the requested axis. The returned axis has some 'massaging' applied to it before being returned. First, it is being returned using the 'map-of-maps' format from json-io so that the column IDs can be converted from Longs to Strings, because Javascript cannot process a 64-bit long value (it stores numbers using a double, which means it can only reliably process 53-bits of a long). Converting the longs to Strings first, allows the column ID to round-trip to the UI and back, and json-io will 'mash' the String column ID into the Long column ID (within the JsonCommandServlet) as it receives the String. It senses the data-type mismatch (json-io does) and then attempts to convert the String to a numeric value (which succeeds). This allows the full 64-bit id to make it round trip.
Branch cache management
App cache Management
Versions Cache Management
This API will fetch particular cell values (identified by the idArrays) for the passed in appId and named cube. The idArrays is an Object[] of Object[]'s:
[ [1, 2, 3], [4, 5, 6], [7, 8, 9], ... ] In the example above, the 1st entry [1, 2, 3] identifies the 1st cell to fetch. The 2nd entry [4, 5, 6] identifies the 2nd cell to fetch, and so on.
[ [[1, 2, 3], {"type":"int", "value":75}], [[4, 5, 6], {"type":"exp", "cache":false, "value":"return 25"}], [[7, 8, 9], {"type":"string", "value":"hello"}], ... ]
Find all references from (out going) an n-cube.
Find all referenced input variables for a given n-cube (and through any n-cubes it references).
Release the passed in SNAPSHOT version (update their status_cd to RELEASE), and then duplicate all the n-cubes in the release, creating new ones in SNAPSHOT status with the version number set to the newSnapVer.
Update an entire set of columns on an axis at one time. The updatedAxis is not a real axis, but treated like an Axis-DTO where the list of columns within the axis are in display order.
In-place update of a cell.