// Copyright 2012 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package com.google.collide.client.testing;
import com.google.collide.clientlibs.model.Workspace;
import com.google.collide.clientlibs.network.shared.WorkspaceImpl;
import com.google.collide.dto.Role;
import com.google.collide.dto.RunTarget;
import com.google.collide.dto.UserDetails;
import com.google.collide.dto.Visibility;
import com.google.collide.dto.WorkspaceInfo;
import com.google.collide.json.shared.JsonArray;
import com.google.collide.shared.util.JsonCollections;
/**
* A stub workspace info which behaves just nice enough to be inserted and used.
*
*/
public class StubWorkspaceInfo implements WorkspaceInfo {
public static StubWorkspaceInfo make() {
String idAndTime = String.valueOf(ID++);
return new StubWorkspaceInfo(
idAndTime, idAndTime, DEFAULT_PROJECT_ID, WorkspaceType.ACTIVE, Visibility.PRIVATE);
}
public static JsonArray<WorkspaceInfo> createMultiple(int mocks) {
JsonArray<WorkspaceInfo> workspaces = JsonCollections.createArray();
for (int i = 0; i < mocks; i++) {
workspaces.add(StubWorkspaceInfo.make());
}
return workspaces;
}
public static JsonArray<Workspace> createMultipleAsWorkspace(int mocks) {
JsonArray<Workspace> workspaces = JsonCollections.createArray();
for (int i = 0; i < mocks; i++) {
workspaces.add(StubWorkspaceInfo.make().asWorkspace());
}
return workspaces;
}
public static final String DEFAULT_PROJECT_ID = "TEST_PROJECT";
public static final String DEFAULT_NAME = "stub";
public static final String DEFAULT_DESCRIPTION = "stub branch";
/**
* Static field to get an id and a time from. Just increases forever.
*/
private static int ID = 10;
private String id;
private String time;
private String projectId;
private String name = DEFAULT_NAME;
private String description = DEFAULT_DESCRIPTION;
private String parentId;
private WorkspaceType workspaceType;
private Role role;
private Role parentRole;
private Visibility visibility;
private StubWorkspaceInfo(String id, String time, String projectId, WorkspaceType workspaceType,
Visibility visibility) {
this.id = id;
this.time = time;
this.projectId = projectId;
this.workspaceType = workspaceType;
this.visibility = visibility;
}
@Override
public String getArchivedTime() {
throw new UnsupportedOperationException();
}
@Override
public String getCreatedTime() {
throw new UnsupportedOperationException();
}
@Override
public String getDescription() {
return description;
}
@Override
public String getId() {
return id;
}
@Override
public String getName() {
return name;
}
@Override
public String getOwningProjectId() {
return projectId;
}
@Override
public String getParentId() {
return parentId;
}
@Override
public Role getCurrentUserRole() {
return role;
}
@Override
public Role getCurrentUserRoleForParent() {
return parentRole;
}
@Override
public RunTarget getRunTarget() {
throw new UnsupportedOperationException();
}
@Override
public String getSortTime() {
return time;
}
@Override
public String getSubmissionTime() {
throw new UnsupportedOperationException();
}
@Override
public Visibility getVisibility() {
return visibility;
}
@Override
public UserDetails getSubmitter() {
throw new UnsupportedOperationException();
}
@Override
public WorkspaceType getWorkspaceType() {
return workspaceType;
}
@Override
public int getType() {
return 0;
}
public StubWorkspaceInfo setId(String id) {
this.id = id;
return this;
}
public StubWorkspaceInfo setTime(String time) {
this.time = time;
return this;
}
public StubWorkspaceInfo setWorkspaceType(WorkspaceType type) {
this.workspaceType = type;
return this;
}
public StubWorkspaceInfo setProjectId(String projectId) {
this.projectId = projectId;
return this;
}
public StubWorkspaceInfo setName(String name) {
this.name = name;
return this;
}
public StubWorkspaceInfo setDescription(String description) {
this.description = description;
return this;
}
public StubWorkspaceInfo setRole(Role role) {
this.role = role;
return this;
}
public StubWorkspaceInfo setParentRole(Role parentRole) {
this.parentRole = parentRole;
return this;
}
public StubWorkspaceInfo setVisibility(Visibility visibility) {
this.visibility = visibility;
return this;
}
public StubWorkspaceInfo setParentId(String parentId) {
this.parentId = parentId;
return this;
}
public WorkspaceImpl asWorkspace() {
// TODO: something real?
return new WorkspaceImpl(null);
}
}