Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Assignment 2 - Testing and Refactoring - 4078306 and 4107861 #15

Open
wants to merge 6 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ public void run() {
private OnDiskCheckout createCheckout(SCMAccessor scm, ProjectVersion pv, String path) {
logger.info("Creating new checkout for " + pv);

File projectRoot = new File(fdsCheckoutRoot, pv.getProject().getName());
File projectRoot = new File(fdsCheckoutRoot, pv.getProjectName());
// It might not exist yet
projectRoot.mkdirs();

Expand Down Expand Up @@ -194,19 +194,19 @@ private Revision projectFileRevision(ProjectFile pf) {
return null;
}

String projectVersion = pf.getProjectVersion().getRevisionId();
long projectId = pf.getProjectVersion().getProject().getId();
try {
String projectVersion = pf.getRevisionId();
long projectId = pf.getProjectId();
try {
return tds.getAccessor(projectId).getSCMAccessor().newRevision(
projectVersion);
} catch (InvalidAccessorException e) {
logger.error("Invalid SCM accessor for project "
+ pf.getProjectVersion().getProject().getName() + " "
+ pf.getProjectName() + " "
+ e.getMessage());
return null;
}
}

/**
* Get the File where the given project file will be cached locally by the
* FDS.
Expand All @@ -230,7 +230,7 @@ private File projectFileLocal(ProjectFile pf, Revision r) {
// Path generation for a "single file checkout"
File checkoutFile = new File(fdsCheckoutRoot
+ System.getProperty("file.separator")
+ pf.getProjectVersion().getProject().getId()
+ pf.getProjectId()
+ System.getProperty("file.separator") + pr.getUniqueId()
+ System.getProperty("file.separator") + pf.getFileName());

Expand All @@ -248,18 +248,26 @@ private File projectFileLocal(ProjectFile pf, Revision r) {
*/
private SCMAccessor projectFileAccessor(ProjectFile pf) {
// Retrieve the project ID
long projectId = pf.getProjectVersion().getProject().getId();
long projectId = pf.getProjectId();

// Get a TDS handle for the selected ProjectFile
try {
return tds.getAccessor(projectId).getSCMAccessor();
} catch (InvalidAccessorException e) {
logger.error("Invalid SCM accessor for project "
+ pf.getProjectVersion().getProject().getName() + " "
+ pf.getProjectName() + " "
+ e.getMessage());
return null;
}
}

/**
* Used for testing. It can pass a tds to be used for testing.
* @param newTds
*/
public void setTds(TDSService newTds){
this.tds = newTds;
}

/**
* Check whether a checkout can be done
Expand All @@ -274,15 +282,15 @@ private boolean canCheckout(ProjectVersion pv) throws CheckoutException {
}
if (!tds.accessorExists(projectId)) {
throw new CheckoutException("No accessor available for project: "
+ pv.getProject().getName());
+ pv.getProjectName());
}

ProjectAccessor a = tds.getAccessor(projectId);

if (a == null) {
logger.warn("Accessor not available even though it exists.");
throw new CheckoutException("Accessor " + "for project "
+ pv.getProject().getName()
+ pv.getProjectName()
+ " not available even though it exists.");
}

Expand All @@ -291,14 +299,14 @@ private boolean canCheckout(ProjectVersion pv) throws CheckoutException {
if (svn == null) {
logger
.warn("No SCM available for "
+ pv.getProject().getName());
+ pv.getProjectName());
throw new CheckoutException(
"No SCM accessor available for project "
+ pv.getProject().getName());
+ pv.getProjectName());
}
} catch (InvalidAccessorException e) {
throw new CheckoutException("Invalid SCM accessor for project "
+ pv.getProject().getName() + " " + e.getMessage());
+ pv.getProjectName() + " " + e.getMessage());
}

return true;
Expand Down Expand Up @@ -368,7 +376,7 @@ private synchronized boolean cacheContains(ProjectVersion pv) {
* key for indexing cache checkouts.
*/
private String cacheKey(ProjectVersion pv) {
return pv.getProject().getName() + "|" + pv.getId() + "|"
return pv.getProjectName() + "|" + pv.getId() + "|"
+ pv.getRevisionId();
}

Expand Down Expand Up @@ -513,12 +521,12 @@ public InMemoryCheckout getInMemoryCheckout(ProjectVersion pv,
svn = tds.getAccessor(projectId).getSCMAccessor();
} catch (InvalidAccessorException e) {
throw new CheckoutException("Invalid SCM accessor for project "
+ pv.getProject().getName() + ": " + e.getMessage());
+ pv.getProjectName() + ": " + e.getMessage());
}
svn.newRevision(pv.getRevisionId());
logger
.info("Finding available checkout for "
+ pv.getProject().getName() + " revision "
+ pv.getProjectName() + " revision "
+ pv.getRevisionId());

return new InMemoryCheckoutImpl(pv, pattern);
Expand All @@ -538,7 +546,7 @@ public OnDiskCheckout getCheckout(ProjectVersion pv, String path)
svn = tds.getAccessor(projectId).getSCMAccessor();
} catch (InvalidAccessorException e) {
throw new CheckoutException("Invalid SCM accessor for project "
+ pv.getProject().getName() + ": " + e.getMessage());
+ pv.getProjectName() + ": " + e.getMessage());
}

svn.newRevision(pv.getRevisionId());
Expand Down
207 changes: 146 additions & 61 deletions alitheia/core/src/main/java/eu/sqooss/service/db/MetricType.java
Original file line number Diff line number Diff line change
Expand Up @@ -85,41 +85,152 @@ public class MetricType extends DAObject {
* activation types, but not necessarily on a 1-1 basis.
*/
public enum Type {
PROJECT{
public Type fromStringType(String s){
if("PROJECT".equals(s))
return Type.PROJECT;
return null;
}

PROJECT,
SOURCE_FILE,
SOURCE_DIRECTORY,
MAILING_LIST,
BUG, PROJECT_VERSION,
MAILTHREAD, MAILMESSAGE,
DEVELOPER, NAMESPACE,
EXECUNIT, ENCAPSUNIT;
public Class<? extends DAObject> toActivator(){
return StoredProject.class;
}
},
SOURCE_FILE{
public Type fromStringType(String s){
if ("SOURCE_CODE".equals(s) || "SOURCE_FILE".equals(s))
return Type.SOURCE_FILE;
return null;
}

public static Type fromString(String s) {
if ("SOURCE_CODE".equals(s) || "SOURCE_FILE".equals(s))
return Type.SOURCE_FILE;
if ("SOURCE_FOLDER".equals(s) || "SOURCE_DIRECTORY".equals(s))
return Type.SOURCE_DIRECTORY;
else if ("MAILING_LIST".equals(s))
return Type.MAILING_LIST;
else if ("BUG_DATABASE".equals(s) || "BUG".equals(s))
return Type.BUG;
else if ("THREAD".equals(s) || "MAILTHREAD".equals(s))
return Type.MAILTHREAD;
else if ("MAILMESSAGE".equals(s))
return Type.MAILMESSAGE;
else if ("PROJECT_WIDE".equals(s) || "PROJECT_VERSION".equals(s))
return Type.PROJECT_VERSION;
else if ("DEVELOPER".equals(s))
return Type.DEVELOPER;
else if ("NAMESPACE".equals(s))
return Type.NAMESPACE;
else if ("EXECUNIT".equals(s))
return Type.EXECUNIT;
else if ("ENCAPSUNIT".equals(s))
return Type.ENCAPSUNIT;
else
public Class<? extends DAObject> toActivator(){
return ProjectFile.class;
}
},
SOURCE_DIRECTORY{
public Type fromStringType(String s){
if ("SOURCE_FOLDER".equals(s) || "SOURCE_DIRECTORY".equals(s))
return Type.SOURCE_DIRECTORY;
return null;
}

public Class<? extends DAObject> toActivator(){
return ProjectDirectory.class;
}
},
MAILING_LIST{
public Type fromStringType(String s){
if ("MAILING_LIST".equals(s))
return Type.MAILING_LIST;
return null;
}

public Class<? extends DAObject> toActivator(){
return MailingList.class;
}
},
BUG{
public Type fromStringType(String s){
if ("BUG_DATABASE".equals(s) || "BUG".equals(s))
return Type.BUG;
return null;
}

public Class<? extends DAObject> toActivator(){
return Bug.class;
}
},
PROJECT_VERSION{
public Type fromStringType(String s){
if ("PROJECT_WIDE".equals(s) || "PROJECT_VERSION".equals(s))
return Type.PROJECT_VERSION;
return null;
}

public Class<? extends DAObject> toActivator(){
return ProjectVersion.class;
}
},
MAILTHREAD{
public Type fromStringType(String s){
if ("THREAD".equals(s) || "MAILTHREAD".equals(s))
return Type.MAILTHREAD;
return null;
}

public Class<? extends DAObject> toActivator(){
return MailingListThread.class;
}
},
MAILMESSAGE{
public Type fromStringType(String s){
if ("MAILMESSAGE".equals(s))
return Type.MAILMESSAGE;
return null;
}

public Class<? extends DAObject> toActivator(){
return MailMessage.class;
}
},
DEVELOPER{
public Type fromStringType(String s){
if ("DEVELOPER".equals(s))
return Type.DEVELOPER;
return null;
}

public Class<? extends DAObject> toActivator(){
return Developer.class;
}
},
NAMESPACE{
public Type fromStringType(String s){
if ("NAMESPACE".equals(s))
return Type.NAMESPACE;
return null;
}

public Class<? extends DAObject> toActivator(){
return NameSpace.class;
}
},
EXECUNIT{
public Type fromStringType(String s){
if ("EXECUNIT".equals(s))
return Type.EXECUNIT;
return null;
}

public Class<? extends DAObject> toActivator(){
return ExecutionUnit.class;
}
},
ENCAPSUNIT{
public Type fromStringType(String s){
if ("ENCAPSUNIT".equals(s))
return Type.ENCAPSUNIT;
return null;
}

public Class<? extends DAObject> toActivator(){
return EncapsulationUnit.class;
}
};

public abstract Type fromStringType(String s);

public abstract Class<? extends DAObject> toActivator();

public static Type fromString(String s) {
Type result = null;
for(Type t : Type.values()){
result = t.fromStringType(s);
if(result != null){
return result;
}
}
return result;
}
}

Expand Down Expand Up @@ -214,35 +325,9 @@ public static MetricType.Type fromActivator(Class<? extends DAObject> activator)
return null;
}

public Class<? extends DAObject> toActivator() {
switch(Type.fromString(this.type)) {
case SOURCE_DIRECTORY:
return ProjectDirectory.class;
case SOURCE_FILE:
return ProjectFile.class;
case PROJECT_VERSION:
return ProjectVersion.class;
case PROJECT:
return StoredProject.class;
case MAILMESSAGE:
return MailMessage.class;
case MAILING_LIST:
return MailingList.class;
case MAILTHREAD:
return MailingListThread.class;
case BUG:
return Bug.class;
case DEVELOPER:
return Developer.class;
case NAMESPACE:
return NameSpace.class;
case ENCAPSUNIT:
return EncapsulationUnit.class;
case EXECUNIT:
return ExecutionUnit.class;
}
return null;
}
public Class<? extends DAObject> toActivator() {
return Type.fromString(type).toActivator();
}
}

//vi: ai nosi sw=4 ts=4 expandtab
11 changes: 11 additions & 0 deletions alitheia/core/src/main/java/eu/sqooss/service/db/ProjectFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -235,6 +235,17 @@ public ProjectVersion getProjectVersion() {
return projectVersion;
}

public String getRevisionId(){
return projectVersion.getRevisionId();
}
public long getProjectId(){
return projectVersion.getProjectId();
}

public String getProjectName(){
return projectVersion.getProjectName();
}

public void setState(ProjectFileState state) {
this.state = state;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,15 @@ public void setId(long id) {
public StoredProject getProject() {
return project;
}

public long getProjectId(){
return project.getId();
}

public String getProjectName(){
return project.getName();
}

public void setProject(StoredProject project) {
this.project = project;
}
Expand Down
Loading