Package edu.umd.cs.findbugs.cloud
Class AbstractCloud
- java.lang.Object
-
- edu.umd.cs.findbugs.cloud.AbstractCloud
-
- All Implemented Interfaces:
Cloud
- Direct Known Subclasses:
BugCollectionStorageCloud
public abstract class AbstractCloud extends java.lang.Object implements Cloud
- Author:
- William Pugh
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface edu.umd.cs.findbugs.cloud.Cloud
Cloud.BugFilingStatus, Cloud.CloudListener, Cloud.CloudStatusListener, Cloud.CloudTask, Cloud.CloudTaskListener, Cloud.Mode, Cloud.SigninState, Cloud.UserDesignation
-
-
Field Summary
Fields Modifier and Type Field Description protected BugCollection
bugCollection
static long
MIN_TIMESTAMP
protected CloudPlugin
plugin
protected PropertyBundle
properties
protected static boolean
THROW_EXCEPTION_IF_CANT_CONNECT
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractCloud(CloudPlugin plugin, BugCollection bugs, java.util.Properties properties)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
addDateSeen(BugInstance b, long when)
void
addListener(Cloud.CloudListener listener)
void
addStatusListener(Cloud.CloudStatusListener listener)
void
bugsPopulated()
Called after the bugs in the bug collection are loaded; bugs should not be synchronized before this method is calledboolean
canSeeCommentsByOthers(BugInstance bug)
boolean
canStoreUserAnnotation(BugInstance bugInstance)
Is this bug one that gets persisted to the cloud? We may decide that we don't persist low confidence issues to the database to avoid overloading itboolean
claim(BugInstance b)
Claim the bugjava.lang.String
claimedBy(BugInstance b)
Get the user who has claimed a bug; null if no one hasboolean
communicationInitiated()
Returns true if communication has already been initiated (and perhaps completed).MutableCloudTask
createTask(java.lang.String name)
java.net.URL
fileBug(BugInstance bug)
protected void
fireIssueDataDownloadedEvent()
BugInstance
getBugByHash(java.lang.String hash)
BugCollection
getBugCollection()
boolean
getBugIsUnassigned(BugInstance b)
does the issue have an unassigned issue in the bug trackerjava.net.URL
getBugLink(BugInstance b)
Get link for bug, either to file one or to view itCloud.BugFilingStatus
getBugLinkStatus(BugInstance b)
get the bug filing status for a bug instancejava.lang.String
getBugLinkType(BugInstance instance)
java.lang.String
getBugStatus(BugInstance b)
A textual description of the bug status (e.g., FIX_LATER, ASSIGNED, OBSOLETE, WILL_NOT_FIX)double
getClassificationDisagreement(BugInstance b)
double
getClassificationScore(BugInstance b)
double
getClassificationVariance(BugInstance b)
java.lang.String
getCloudName()
protected java.lang.String
getCloudProperty(java.lang.String propertyName)
java.lang.String
getCloudReport(BugInstance b)
java.lang.String
getCloudReportWithoutMe(BugInstance b)
Cloud.UserDesignation
getConsensusDesignation(BugInstance b)
long
getFirstSeen(BugInstance b)
IGuiCallback
getGuiCallback()
boolean
getIWillFix(BugInstance b)
has the user said they will fix this bugprotected abstract java.lang.Iterable<BugDesignation>
getLatestDesignationFromEachUser(BugInstance bd)
long
getLocalFirstSeen(BugInstance b)
Cloud.Mode
getMode()
Get voting modeint
getNumberReviewers(BugInstance b)
CloudPlugin
getPlugin()
double
getPortionObsoleteClassifications(BugInstance b)
java.util.Set<java.lang.String>
getReviewers(BugInstance b)
Cloud.SigninState
getSigninState()
java.net.URL
getSourceLink(BugInstance b)
URL to view the source for a bug instancejava.lang.String
getSourceLinkToolTip(BugInstance b)
Tool tip text for "view source" buttonjava.lang.String
getStatusMsg()
Get a status message for the cloud; information about any errors, and information about database synchronizationjava.util.Date
getUserDate(BugInstance b)
Cloud.UserDesignation
getUserDesignation(BugInstance b)
Get the user's designation for the bugjava.lang.String
getUserEvaluation(BugInstance b)
Get free text evaluation of the bugprotected NameLookup
getUsernameLookup()
long
getUserTimestamp(BugInstance b)
Return the time the user last changed their evaluation of this bugboolean
getWillNotBeFixed(BugInstance b)
has the issue been marked "will not be fixed" in a bug trackerboolean
hasVoted(BugInstance bug)
boolean
initialize()
Attempt to initialize the cloudboolean
isInitialized()
Return true if the cloud has been successfully initializedprotected boolean
issueDataHasBeenDownloaded()
java.lang.String
notInCloudMsg(BugInstance b)
boolean
overallClassificationIsNotAProblem(BugInstance b)
void
printCloudSummary(java.io.PrintWriter w, java.lang.Iterable<BugInstance> bugs, java.lang.String[] packagePrefixes)
static void
printLeaderBoard2(java.io.PrintWriter w, Multiset<java.lang.String> evaluations, int maxRows, java.lang.String alwaysPrint, java.lang.String format, java.lang.String title)
void
removeListener(Cloud.CloudListener listener)
void
removeStatusListener(Cloud.CloudStatusListener listener)
void
setBugLinkOnCloudAndStoreIssueDetails(BugInstance b, java.lang.String viewUrl, java.lang.String linkType)
void
setMode(Cloud.Mode mode)
Set voting modevoid
setSigninState(Cloud.SigninState state)
void
setStatusMsg(java.lang.String newMsg)
void
shutdown()
Shutdown the cloud, note termination of session, close connectionsboolean
supportsBugLinks()
Supports links to a bug databaseboolean
supportsClaims()
Supports allowing users to claim a bugboolean
supportsCloudReports()
Supports textual summaries about the status of a bugboolean
supportsCloudSummaries()
boolean
supportsSourceLinks()
Does the cloud support source lines (e.g., to FishEye)void
updateBugStatusCache(BugInstance b, java.lang.String status)
Updates the local cache of bug reporting status.void
updatedIssue(BugInstance bug)
protected void
updatedStatus()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface edu.umd.cs.findbugs.cloud.Cloud
availableForInitialization, bugFiled, getPrimaryDesignation, getProjects, getUser, initiateCommunication, isInCloud, isOnlineCloud, isSavingSignInInformationEnabled, setSaveSignInInformation, signIn, signOut, storeUserAnnotation, waitUntilIssueDataDownloaded, waitUntilIssueDataDownloaded, waitUntilNewIssuesUploaded, waitUntilNewIssuesUploaded
-
-
-
-
Field Detail
-
MIN_TIMESTAMP
public static long MIN_TIMESTAMP
-
THROW_EXCEPTION_IF_CANT_CONNECT
protected static final boolean THROW_EXCEPTION_IF_CANT_CONNECT
- See Also:
- Constant Field Values
-
plugin
protected final CloudPlugin plugin
-
bugCollection
protected final BugCollection bugCollection
-
properties
protected final PropertyBundle properties
-
-
Constructor Detail
-
AbstractCloud
protected AbstractCloud(CloudPlugin plugin, BugCollection bugs, java.util.Properties properties)
-
-
Method Detail
-
isInitialized
public boolean isInitialized()
Description copied from interface:Cloud
Return true if the cloud has been successfully initialized- Specified by:
isInitialized
in interfaceCloud
-
initialize
@OverridingMethodsMustInvokeSuper public boolean initialize() throws java.io.IOException
Description copied from interface:Cloud
Attempt to initialize the cloud- Specified by:
initialize
in interfaceCloud
- Returns:
- true if successful
- Throws:
java.io.IOException
-
getMode
public Cloud.Mode getMode()
Description copied from interface:Cloud
Get voting mode
-
setMode
public void setMode(Cloud.Mode mode)
Description copied from interface:Cloud
Set voting mode
-
getPlugin
public CloudPlugin getPlugin()
-
getBugCollection
public BugCollection getBugCollection()
- Specified by:
getBugCollection
in interfaceCloud
-
supportsBugLinks
public boolean supportsBugLinks()
Description copied from interface:Cloud
Supports links to a bug database- Specified by:
supportsBugLinks
in interfaceCloud
-
setBugLinkOnCloudAndStoreIssueDetails
public void setBugLinkOnCloudAndStoreIssueDetails(BugInstance b, java.lang.String viewUrl, java.lang.String linkType) throws java.io.IOException, SignInCancelledException
- Specified by:
setBugLinkOnCloudAndStoreIssueDetails
in interfaceCloud
- Throws:
java.io.IOException
SignInCancelledException
-
updateBugStatusCache
public void updateBugStatusCache(BugInstance b, java.lang.String status)
Description copied from interface:Cloud
Updates the local cache of bug reporting status. Does not modify server code.- Specified by:
updateBugStatusCache
in interfaceCloud
-
supportsClaims
public boolean supportsClaims()
Description copied from interface:Cloud
Supports allowing users to claim a bug- Specified by:
supportsClaims
in interfaceCloud
-
supportsCloudReports
public boolean supportsCloudReports()
Description copied from interface:Cloud
Supports textual summaries about the status of a bug- Specified by:
supportsCloudReports
in interfaceCloud
-
claimedBy
public java.lang.String claimedBy(BugInstance b)
Description copied from interface:Cloud
Get the user who has claimed a bug; null if no one has
-
claim
public boolean claim(BugInstance b)
Description copied from interface:Cloud
Claim the bug
-
getBugLink
public java.net.URL getBugLink(BugInstance b)
Description copied from interface:Cloud
Get link for bug, either to file one or to view it- Specified by:
getBugLink
in interfaceCloud
-
getBugLinkType
public java.lang.String getBugLinkType(BugInstance instance)
- Specified by:
getBugLinkType
in interfaceCloud
-
fileBug
public java.net.URL fileBug(BugInstance bug)
-
getBugLinkStatus
public Cloud.BugFilingStatus getBugLinkStatus(BugInstance b)
Description copied from interface:Cloud
get the bug filing status for a bug instance- Specified by:
getBugLinkStatus
in interfaceCloud
-
canSeeCommentsByOthers
public boolean canSeeCommentsByOthers(BugInstance bug)
-
hasVoted
public boolean hasVoted(BugInstance bug)
-
notInCloudMsg
public java.lang.String notInCloudMsg(BugInstance b)
-
getCloudReport
public java.lang.String getCloudReport(BugInstance b)
- Specified by:
getCloudReport
in interfaceCloud
-
getCloudReportWithoutMe
public java.lang.String getCloudReportWithoutMe(BugInstance b)
- Specified by:
getCloudReportWithoutMe
in interfaceCloud
-
bugsPopulated
public void bugsPopulated()
Description copied from interface:Cloud
Called after the bugs in the bug collection are loaded; bugs should not be synchronized before this method is called- Specified by:
bugsPopulated
in interfaceCloud
-
issueDataHasBeenDownloaded
protected boolean issueDataHasBeenDownloaded()
-
getBugStatus
public java.lang.String getBugStatus(BugInstance b)
Description copied from interface:Cloud
A textual description of the bug status (e.g., FIX_LATER, ASSIGNED, OBSOLETE, WILL_NOT_FIX)- Specified by:
getBugStatus
in interfaceCloud
-
getLatestDesignationFromEachUser
protected abstract java.lang.Iterable<BugDesignation> getLatestDesignationFromEachUser(BugInstance bd)
-
getUserDate
public java.util.Date getUserDate(BugInstance b)
- Specified by:
getUserDate
in interfaceCloud
-
addListener
public void addListener(Cloud.CloudListener listener)
- Specified by:
addListener
in interfaceCloud
-
removeListener
public void removeListener(Cloud.CloudListener listener)
- Specified by:
removeListener
in interfaceCloud
-
addStatusListener
public void addStatusListener(Cloud.CloudStatusListener listener)
- Specified by:
addStatusListener
in interfaceCloud
-
removeStatusListener
public void removeStatusListener(Cloud.CloudStatusListener listener)
- Specified by:
removeStatusListener
in interfaceCloud
-
getStatusMsg
public java.lang.String getStatusMsg()
Description copied from interface:Cloud
Get a status message for the cloud; information about any errors, and information about database synchronization- Specified by:
getStatusMsg
in interfaceCloud
-
shutdown
public void shutdown()
Description copied from interface:Cloud
Shutdown the cloud, note termination of session, close connections
-
getIWillFix
public boolean getIWillFix(BugInstance b)
Description copied from interface:Cloud
has the user said they will fix this bug- Specified by:
getIWillFix
in interfaceCloud
-
getConsensusDesignation
public Cloud.UserDesignation getConsensusDesignation(BugInstance b)
- Specified by:
getConsensusDesignation
in interfaceCloud
- Returns:
Cloud.UserDesignation.UNCLASSIFIED
if no consensus has been reached
-
overallClassificationIsNotAProblem
public boolean overallClassificationIsNotAProblem(BugInstance b)
- Specified by:
overallClassificationIsNotAProblem
in interfaceCloud
-
getClassificationScore
public double getClassificationScore(BugInstance b)
- Specified by:
getClassificationScore
in interfaceCloud
-
getClassificationVariance
public double getClassificationVariance(BugInstance b)
- Specified by:
getClassificationVariance
in interfaceCloud
-
getPortionObsoleteClassifications
public double getPortionObsoleteClassifications(BugInstance b)
- Specified by:
getPortionObsoleteClassifications
in interfaceCloud
-
getNumberReviewers
public int getNumberReviewers(BugInstance b)
- Specified by:
getNumberReviewers
in interfaceCloud
-
printCloudSummary
public void printCloudSummary(java.io.PrintWriter w, java.lang.Iterable<BugInstance> bugs, java.lang.String[] packagePrefixes)
- Specified by:
printCloudSummary
in interfaceCloud
-
printLeaderBoard2
public static void printLeaderBoard2(java.io.PrintWriter w, Multiset<java.lang.String> evaluations, int maxRows, java.lang.String alwaysPrint, java.lang.String format, java.lang.String title)
-
supportsCloudSummaries
public boolean supportsCloudSummaries()
- Specified by:
supportsCloudSummaries
in interfaceCloud
-
canStoreUserAnnotation
public boolean canStoreUserAnnotation(BugInstance bugInstance)
Description copied from interface:Cloud
Is this bug one that gets persisted to the cloud? We may decide that we don't persist low confidence issues to the database to avoid overloading it- Specified by:
canStoreUserAnnotation
in interfaceCloud
-
getClassificationDisagreement
public double getClassificationDisagreement(BugInstance b)
- Specified by:
getClassificationDisagreement
in interfaceCloud
-
getUserDesignation
public Cloud.UserDesignation getUserDesignation(BugInstance b)
Description copied from interface:Cloud
Get the user's designation for the bug- Specified by:
getUserDesignation
in interfaceCloud
-
getUserEvaluation
public java.lang.String getUserEvaluation(BugInstance b)
Description copied from interface:Cloud
Get free text evaluation of the bug- Specified by:
getUserEvaluation
in interfaceCloud
-
getUserTimestamp
public long getUserTimestamp(BugInstance b)
Description copied from interface:Cloud
Return the time the user last changed their evaluation of this bug- Specified by:
getUserTimestamp
in interfaceCloud
-
getFirstSeen
public long getFirstSeen(BugInstance b)
- Specified by:
getFirstSeen
in interfaceCloud
-
addDateSeen
public void addDateSeen(BugInstance b, long when)
- Specified by:
addDateSeen
in interfaceCloud
-
updatedStatus
protected void updatedStatus()
-
updatedIssue
public void updatedIssue(BugInstance bug)
-
fireIssueDataDownloadedEvent
protected void fireIssueDataDownloadedEvent()
-
getSigninState
public Cloud.SigninState getSigninState()
- Specified by:
getSigninState
in interfaceCloud
-
setSigninState
public void setSigninState(Cloud.SigninState state)
-
getBugByHash
public BugInstance getBugByHash(java.lang.String hash)
-
getUsernameLookup
protected NameLookup getUsernameLookup() throws java.io.IOException
- Throws:
java.io.IOException
-
createTask
public MutableCloudTask createTask(java.lang.String name)
-
setStatusMsg
public void setStatusMsg(java.lang.String newMsg)
-
getCloudProperty
protected java.lang.String getCloudProperty(java.lang.String propertyName)
-
supportsSourceLinks
public boolean supportsSourceLinks()
Description copied from interface:Cloud
Does the cloud support source lines (e.g., to FishEye)- Specified by:
supportsSourceLinks
in interfaceCloud
-
getSourceLink
@CheckForNull public java.net.URL getSourceLink(BugInstance b)
Description copied from interface:Cloud
URL to view the source for a bug instance- Specified by:
getSourceLink
in interfaceCloud
-
getSourceLinkToolTip
public java.lang.String getSourceLinkToolTip(BugInstance b)
Description copied from interface:Cloud
Tool tip text for "view source" button- Specified by:
getSourceLinkToolTip
in interfaceCloud
-
getBugIsUnassigned
public boolean getBugIsUnassigned(BugInstance b)
Description copied from interface:Cloud
does the issue have an unassigned issue in the bug tracker- Specified by:
getBugIsUnassigned
in interfaceCloud
-
getWillNotBeFixed
public boolean getWillNotBeFixed(BugInstance b)
Description copied from interface:Cloud
has the issue been marked "will not be fixed" in a bug tracker- Specified by:
getWillNotBeFixed
in interfaceCloud
-
getReviewers
public java.util.Set<java.lang.String> getReviewers(BugInstance b)
- Specified by:
getReviewers
in interfaceCloud
-
getGuiCallback
public IGuiCallback getGuiCallback()
- Specified by:
getGuiCallback
in interfaceCloud
-
getCloudName
public java.lang.String getCloudName()
- Specified by:
getCloudName
in interfaceCloud
-
communicationInitiated
public boolean communicationInitiated()
Description copied from interface:Cloud
Returns true if communication has already been initiated (and perhaps completed).- Specified by:
communicationInitiated
in interfaceCloud
-
getLocalFirstSeen
public long getLocalFirstSeen(BugInstance b)
-
-