Skip to content
peter-plochan edited this page Feb 26, 2016 · 20 revisions

Initialisation

Configure connection using one of constructors of GoodData class. One can then get initialised service he needs from the newly constructed instance. This instance can be also used later for logout from GoodData Platform.

GoodData gd = new GoodData("roman@gooddata.com", "Roman1");

If you need to tune additional settings like maxConnections, connectionTimeout, connectionTimeout or socketTimeout, use GoodDataSettings class and passed its instance to GoodData constructor.

Project API

Manage GoodData projects with its users, user roles, templates, validation and feature flags.

ProjectService projectService = gd.getProjectService();

Get all projects current user has access to

Collection<Project> projects = projectService.getProjects();

Create new project

Project project = projectService.createProject(new Project("my project", "MyToken")).get();

Remove project

projectService.removeProject(project);

Validate project

Set<ProjectValidationType> types = projectService.getAvailableProjectValidationTypes(project);
ProjectValidationResults results = projectService.validateProject(project, types).get();

List project users

List<User> users = new ArrayList<>();
List<User> page;
while (!(page = projectService.listUsers(project, new PageRequest(users.size(), 100))).isEmpty()) {
    users.addAll(page);
}

List project user roles

Set<Role> roles = projectService.getRoles(project);

List project templates

Collection<ProjectTemplate> templates = projectService.getProjectTemplates(project);

Lists aggregated feature flags for given project and current user (aggregates global, project group, project and user feature flags)

List<FeatureFlag> flags = projectService.listAggregatedFeatureFlags(project);

List project's feature flags

List<ProjectFeatureFlag> projectFeatureFlags = projectService.listFeatureFlags(project);

Get feature flag by unique name (aka "key")

ProjectFeatureFlag featureFlag = projectService.getFeatureFlag(project, featureFlagName);

Create new feature flag for given project

ProjectFeatureFlag featureFlag = projectService.createFeatureFlag(project,
                new ProjectFeatureFlag(featureFlagName));

Update existing project feature flag

ProjectFeatureFlag updatedFeatureFlag = projectService.updateFeatureFlag(
                new ProjectFeatureFlag(featureFlagName, false, new ProjectFeatureFlag.Links(featureFlagUri)));

Delete existing project feature flag

projectService.deleteFeatureFlag(new ProjectFeatureFlag(featureFlagName, true,
                new ProjectFeatureFlag.Links(featureFlagUri)));

Project Model API

Create and update the project model, execute MAQL DDL,...

ModelService modelService = gd.getModelService();
ModelDiff diff = modelService.getProjectModelDiff(project,
    new InputStreamReader(getClass().getResourceAsStream("/person.json"))).get();
modelService.updateProjectModel(project, diff).get();

modelService.updateProjectModel(project, "MAQL DDL EXPRESSION").get();

Metadata API

Query, create and update project metadata - attributes, facts, metrics, reports,...

MetadataService md = gd.getMetadataService();

String fact = md.getObjUri(project, Fact.class, identifier("fact.person.shoesize"));
Metric m = md.createObj(project, new Metric("Avg shoe size", "SELECT AVG([" + fact + "])", "#,##0"));

Attribute attr = md.getObj(project, Attribute.class, identifier("attr.person.department"));

ReportDefinition definition = GridReportDefinitionContent.create(
        "Department avg shoe size",
        asList("metricGroup"),
        asList(new AttributeInGrid(attr.getDefaultDisplayForm().getUri())),
        asList(new GridElement(m.getUri(), "Avg shoe size"))
);
definition = md.createObj(project, definition);
Report report = md.createObj(project, new Report(definition.getTitle(), definition));

Create and retrieve scheduled mails on reports and dashboards

ScheduledMail scheduledMail = md.createObj(
    project,
    (new ScheduledMail("Scheduled Mail Title", "Scheduled Mail Summary"))
        .setRecurrency("0:0:0:1*12:0:0")
        .setStartDate(new LocalDate(2012, 6, 5))
        .setTimeZone("America/Los_Angeles")
        .addToAddress("user_in_project@example.com")
        .addBccAddress("another_user_in_project@example.com")
        .setSubject("Mail subject")
        .setBody("Mail body")
        .addReportAttachment(reportDefinition,
                             Collections.singletonMap("pageOrientation", "landscape"),
                             pdf, xls)
);

Collection<Entry> result = md.find(project, ScheduledMail.class);
for (Entry e : result) {
    ScheduledMail schedule = md.getObjByUri(e.getLink(), ScheduledMail.class);
}

Dataset API

DatasetService datasetService = gd.getDatasetService();

Upload data to dataset

datasetService.loadDataset(project, "datasetId", new FileInputStream("data.csv")).get();

Upload data to datasets using batch upload

DatasetManifest personManifest = datasetService.getDatasetManifest(project, "dataset.person");
personManifest.setSource(getClass().getResourceAsStream("/person.csv"));

DatasetManifest cityManifest = datasetService.getDatasetManifest(project, "dataset.city");
cityManifest.setSource(getClass().getResourceAsStream("/city.csv"));

datasetService.loadDatasets(project, personManifest, cityManifest).get();

Update data in dataset

datasetService.updateProjectData(project, "DELETE FROM {attr.person.name} WHERE {label.person.name} = \"not exists\";");

Report API

Execute and export reports.

ReportService reportService = gd.getReportService();
reportService.exportReport(definition, PNG, new FileOutputStream("report.png"));

DataStore API

Manage files on the data store (currently backed by WebDAV) - user staging area.

DataStoreService dataStoreService = gd.getDataStoreService();
dataStoreService.upload("/dir/file.txt", new FileInputStream("file.txt"));
InputStream stream = dataStoreService.download("/dir/file.txt");
dataStoreService.delete("/dir/file.txt");

Warehouse API

Manage warehouses - create, update, list and delete.

WarehouseService warehouseService = gd.getWarehouseService();
Warehouse warehouse = warehouseService.createWarehouse(new Warehouse("title", "authToken", "description")).get();
String jdbc = warehouse.getJdbcConnectionString();

Collection<Warehouse> warehouseList = warehouseService.listWarehouses();
warehouseService.removeWarehouse(warehouse);

Dataload Process API

Manage dataload processes - create, update, list, delete, and process executions - execute, get logs, schedules,...

ProcessService processService = gd.getProcessService();
DataloadProcess process = processService.createProcess(project, new DataloadProcess("name", "GRAPH"), new File("path/to/processdatadir"));

ProcessExecutionDetail executionDetail = processService.executeProcess(new ProcessExecution(process, "myGraph.grf")).get();
processService.getExecutionLog(executionDetail, new FileOutputStream("file/where/the/log/willbewritten"));

processService.createSchedule(project, new Schedule(process, "myGraph.grf", "0 0 * * *"));

Import/Export API

Import/export project metadata. Example:

ImportExportService importExportService = gd.getImportExportService();

PartialMdExport exportConfig = new PartialMdExport("/gdc/md/projectId/obj/123");
PartialMdExportToken exportToken = importExportService.partialExport(projectFrom, exportConfig).get();

importExportService.partialImport(projectTo, exportToken).get();

Logout

Logout from GoodData Platform

gd.logout();

Clone this wiki locally