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 BugCollectionbugCollectionstatic longMIN_TIMESTAMPprotected CloudPluginpluginprotected PropertyBundlepropertiesprotected static booleanTHROW_EXCEPTION_IF_CANT_CONNECT
-
Constructor Summary
Constructors Modifier Constructor Description protectedAbstractCloud(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 voidaddDateSeen(BugInstance b, long when)voidaddListener(Cloud.CloudListener listener)voidaddStatusListener(Cloud.CloudStatusListener listener)voidbugsPopulated()Called after the bugs in the bug collection are loaded; bugs should not be synchronized before this method is calledbooleancanSeeCommentsByOthers(BugInstance bug)booleancanStoreUserAnnotation(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 itbooleanclaim(BugInstance b)Claim the bugjava.lang.StringclaimedBy(BugInstance b)Get the user who has claimed a bug; null if no one hasbooleancommunicationInitiated()Returns true if communication has already been initiated (and perhaps completed).MutableCloudTaskcreateTask(java.lang.String name)java.net.URLfileBug(BugInstance bug)protected voidfireIssueDataDownloadedEvent()BugInstancegetBugByHash(java.lang.String hash)BugCollectiongetBugCollection()booleangetBugIsUnassigned(BugInstance b)does the issue have an unassigned issue in the bug trackerjava.net.URLgetBugLink(BugInstance b)Get link for bug, either to file one or to view itCloud.BugFilingStatusgetBugLinkStatus(BugInstance b)get the bug filing status for a bug instancejava.lang.StringgetBugLinkType(BugInstance instance)java.lang.StringgetBugStatus(BugInstance b)A textual description of the bug status (e.g., FIX_LATER, ASSIGNED, OBSOLETE, WILL_NOT_FIX)doublegetClassificationDisagreement(BugInstance b)doublegetClassificationScore(BugInstance b)doublegetClassificationVariance(BugInstance b)java.lang.StringgetCloudName()protected java.lang.StringgetCloudProperty(java.lang.String propertyName)java.lang.StringgetCloudReport(BugInstance b)java.lang.StringgetCloudReportWithoutMe(BugInstance b)Cloud.UserDesignationgetConsensusDesignation(BugInstance b)longgetFirstSeen(BugInstance b)IGuiCallbackgetGuiCallback()booleangetIWillFix(BugInstance b)has the user said they will fix this bugprotected abstract java.lang.Iterable<BugDesignation>getLatestDesignationFromEachUser(BugInstance bd)longgetLocalFirstSeen(BugInstance b)Cloud.ModegetMode()Get voting modeintgetNumberReviewers(BugInstance b)CloudPlugingetPlugin()doublegetPortionObsoleteClassifications(BugInstance b)java.util.Set<java.lang.String>getReviewers(BugInstance b)Cloud.SigninStategetSigninState()java.net.URLgetSourceLink(BugInstance b)URL to view the source for a bug instancejava.lang.StringgetSourceLinkToolTip(BugInstance b)Tool tip text for "view source" buttonjava.lang.StringgetStatusMsg()Get a status message for the cloud; information about any errors, and information about database synchronizationjava.util.DategetUserDate(BugInstance b)Cloud.UserDesignationgetUserDesignation(BugInstance b)Get the user's designation for the bugjava.lang.StringgetUserEvaluation(BugInstance b)Get free text evaluation of the bugprotected NameLookupgetUsernameLookup()longgetUserTimestamp(BugInstance b)Return the time the user last changed their evaluation of this bugbooleangetWillNotBeFixed(BugInstance b)has the issue been marked "will not be fixed" in a bug trackerbooleanhasVoted(BugInstance bug)booleaninitialize()Attempt to initialize the cloudbooleanisInitialized()Return true if the cloud has been successfully initializedprotected booleanissueDataHasBeenDownloaded()java.lang.StringnotInCloudMsg(BugInstance b)booleanoverallClassificationIsNotAProblem(BugInstance b)voidprintCloudSummary(java.io.PrintWriter w, java.lang.Iterable<BugInstance> bugs, java.lang.String[] packagePrefixes)static voidprintLeaderBoard2(java.io.PrintWriter w, Multiset<java.lang.String> evaluations, int maxRows, java.lang.String alwaysPrint, java.lang.String format, java.lang.String title)voidremoveListener(Cloud.CloudListener listener)voidremoveStatusListener(Cloud.CloudStatusListener listener)voidsetBugLinkOnCloudAndStoreIssueDetails(BugInstance b, java.lang.String viewUrl, java.lang.String linkType)voidsetMode(Cloud.Mode mode)Set voting modevoidsetSigninState(Cloud.SigninState state)voidsetStatusMsg(java.lang.String newMsg)voidshutdown()Shutdown the cloud, note termination of session, close connectionsbooleansupportsBugLinks()Supports links to a bug databasebooleansupportsClaims()Supports allowing users to claim a bugbooleansupportsCloudReports()Supports textual summaries about the status of a bugbooleansupportsCloudSummaries()booleansupportsSourceLinks()Does the cloud support source lines (e.g., to FishEye)voidupdateBugStatusCache(BugInstance b, java.lang.String status)Updates the local cache of bug reporting status.voidupdatedIssue(BugInstance bug)protected voidupdatedStatus()-
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:CloudReturn true if the cloud has been successfully initialized- Specified by:
isInitializedin interfaceCloud
-
initialize
@OverridingMethodsMustInvokeSuper public boolean initialize() throws java.io.IOExceptionDescription copied from interface:CloudAttempt to initialize the cloud- Specified by:
initializein interfaceCloud- Returns:
- true if successful
- Throws:
java.io.IOException
-
getMode
public Cloud.Mode getMode()
Description copied from interface:CloudGet voting mode
-
setMode
public void setMode(Cloud.Mode mode)
Description copied from interface:CloudSet voting mode
-
getPlugin
public CloudPlugin getPlugin()
-
getBugCollection
public BugCollection getBugCollection()
- Specified by:
getBugCollectionin interfaceCloud
-
supportsBugLinks
public boolean supportsBugLinks()
Description copied from interface:CloudSupports links to a bug database- Specified by:
supportsBugLinksin interfaceCloud
-
setBugLinkOnCloudAndStoreIssueDetails
public void setBugLinkOnCloudAndStoreIssueDetails(BugInstance b, java.lang.String viewUrl, java.lang.String linkType) throws java.io.IOException, SignInCancelledException
- Specified by:
setBugLinkOnCloudAndStoreIssueDetailsin interfaceCloud- Throws:
java.io.IOExceptionSignInCancelledException
-
updateBugStatusCache
public void updateBugStatusCache(BugInstance b, java.lang.String status)
Description copied from interface:CloudUpdates the local cache of bug reporting status. Does not modify server code.- Specified by:
updateBugStatusCachein interfaceCloud
-
supportsClaims
public boolean supportsClaims()
Description copied from interface:CloudSupports allowing users to claim a bug- Specified by:
supportsClaimsin interfaceCloud
-
supportsCloudReports
public boolean supportsCloudReports()
Description copied from interface:CloudSupports textual summaries about the status of a bug- Specified by:
supportsCloudReportsin interfaceCloud
-
claimedBy
public java.lang.String claimedBy(BugInstance b)
Description copied from interface:CloudGet the user who has claimed a bug; null if no one has
-
claim
public boolean claim(BugInstance b)
Description copied from interface:CloudClaim the bug
-
getBugLink
public java.net.URL getBugLink(BugInstance b)
Description copied from interface:CloudGet link for bug, either to file one or to view it- Specified by:
getBugLinkin interfaceCloud
-
getBugLinkType
public java.lang.String getBugLinkType(BugInstance instance)
- Specified by:
getBugLinkTypein interfaceCloud
-
fileBug
public java.net.URL fileBug(BugInstance bug)
-
getBugLinkStatus
public Cloud.BugFilingStatus getBugLinkStatus(BugInstance b)
Description copied from interface:Cloudget the bug filing status for a bug instance- Specified by:
getBugLinkStatusin 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:
getCloudReportin interfaceCloud
-
getCloudReportWithoutMe
public java.lang.String getCloudReportWithoutMe(BugInstance b)
- Specified by:
getCloudReportWithoutMein interfaceCloud
-
bugsPopulated
public void bugsPopulated()
Description copied from interface:CloudCalled after the bugs in the bug collection are loaded; bugs should not be synchronized before this method is called- Specified by:
bugsPopulatedin interfaceCloud
-
issueDataHasBeenDownloaded
protected boolean issueDataHasBeenDownloaded()
-
getBugStatus
public java.lang.String getBugStatus(BugInstance b)
Description copied from interface:CloudA textual description of the bug status (e.g., FIX_LATER, ASSIGNED, OBSOLETE, WILL_NOT_FIX)- Specified by:
getBugStatusin interfaceCloud
-
getLatestDesignationFromEachUser
protected abstract java.lang.Iterable<BugDesignation> getLatestDesignationFromEachUser(BugInstance bd)
-
getUserDate
public java.util.Date getUserDate(BugInstance b)
- Specified by:
getUserDatein interfaceCloud
-
addListener
public void addListener(Cloud.CloudListener listener)
- Specified by:
addListenerin interfaceCloud
-
removeListener
public void removeListener(Cloud.CloudListener listener)
- Specified by:
removeListenerin interfaceCloud
-
addStatusListener
public void addStatusListener(Cloud.CloudStatusListener listener)
- Specified by:
addStatusListenerin interfaceCloud
-
removeStatusListener
public void removeStatusListener(Cloud.CloudStatusListener listener)
- Specified by:
removeStatusListenerin interfaceCloud
-
getStatusMsg
public java.lang.String getStatusMsg()
Description copied from interface:CloudGet a status message for the cloud; information about any errors, and information about database synchronization- Specified by:
getStatusMsgin interfaceCloud
-
shutdown
public void shutdown()
Description copied from interface:CloudShutdown the cloud, note termination of session, close connections
-
getIWillFix
public boolean getIWillFix(BugInstance b)
Description copied from interface:Cloudhas the user said they will fix this bug- Specified by:
getIWillFixin interfaceCloud
-
getConsensusDesignation
public Cloud.UserDesignation getConsensusDesignation(BugInstance b)
- Specified by:
getConsensusDesignationin interfaceCloud- Returns:
Cloud.UserDesignation.UNCLASSIFIEDif no consensus has been reached
-
overallClassificationIsNotAProblem
public boolean overallClassificationIsNotAProblem(BugInstance b)
- Specified by:
overallClassificationIsNotAProblemin interfaceCloud
-
getClassificationScore
public double getClassificationScore(BugInstance b)
- Specified by:
getClassificationScorein interfaceCloud
-
getClassificationVariance
public double getClassificationVariance(BugInstance b)
- Specified by:
getClassificationVariancein interfaceCloud
-
getPortionObsoleteClassifications
public double getPortionObsoleteClassifications(BugInstance b)
- Specified by:
getPortionObsoleteClassificationsin interfaceCloud
-
getNumberReviewers
public int getNumberReviewers(BugInstance b)
- Specified by:
getNumberReviewersin interfaceCloud
-
printCloudSummary
public void printCloudSummary(java.io.PrintWriter w, java.lang.Iterable<BugInstance> bugs, java.lang.String[] packagePrefixes)- Specified by:
printCloudSummaryin 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:
supportsCloudSummariesin interfaceCloud
-
canStoreUserAnnotation
public boolean canStoreUserAnnotation(BugInstance bugInstance)
Description copied from interface:CloudIs 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:
canStoreUserAnnotationin interfaceCloud
-
getClassificationDisagreement
public double getClassificationDisagreement(BugInstance b)
- Specified by:
getClassificationDisagreementin interfaceCloud
-
getUserDesignation
public Cloud.UserDesignation getUserDesignation(BugInstance b)
Description copied from interface:CloudGet the user's designation for the bug- Specified by:
getUserDesignationin interfaceCloud
-
getUserEvaluation
public java.lang.String getUserEvaluation(BugInstance b)
Description copied from interface:CloudGet free text evaluation of the bug- Specified by:
getUserEvaluationin interfaceCloud
-
getUserTimestamp
public long getUserTimestamp(BugInstance b)
Description copied from interface:CloudReturn the time the user last changed their evaluation of this bug- Specified by:
getUserTimestampin interfaceCloud
-
getFirstSeen
public long getFirstSeen(BugInstance b)
- Specified by:
getFirstSeenin interfaceCloud
-
addDateSeen
public void addDateSeen(BugInstance b, long when)
- Specified by:
addDateSeenin interfaceCloud
-
updatedStatus
protected void updatedStatus()
-
updatedIssue
public void updatedIssue(BugInstance bug)
-
fireIssueDataDownloadedEvent
protected void fireIssueDataDownloadedEvent()
-
getSigninState
public Cloud.SigninState getSigninState()
- Specified by:
getSigninStatein 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:CloudDoes the cloud support source lines (e.g., to FishEye)- Specified by:
supportsSourceLinksin interfaceCloud
-
getSourceLink
@CheckForNull public java.net.URL getSourceLink(BugInstance b)
Description copied from interface:CloudURL to view the source for a bug instance- Specified by:
getSourceLinkin interfaceCloud
-
getSourceLinkToolTip
public java.lang.String getSourceLinkToolTip(BugInstance b)
Description copied from interface:CloudTool tip text for "view source" button- Specified by:
getSourceLinkToolTipin interfaceCloud
-
getBugIsUnassigned
public boolean getBugIsUnassigned(BugInstance b)
Description copied from interface:Clouddoes the issue have an unassigned issue in the bug tracker- Specified by:
getBugIsUnassignedin interfaceCloud
-
getWillNotBeFixed
public boolean getWillNotBeFixed(BugInstance b)
Description copied from interface:Cloudhas the issue been marked "will not be fixed" in a bug tracker- Specified by:
getWillNotBeFixedin interfaceCloud
-
getReviewers
public java.util.Set<java.lang.String> getReviewers(BugInstance b)
- Specified by:
getReviewersin interfaceCloud
-
getGuiCallback
public IGuiCallback getGuiCallback()
- Specified by:
getGuiCallbackin interfaceCloud
-
getCloudName
public java.lang.String getCloudName()
- Specified by:
getCloudNamein interfaceCloud
-
communicationInitiated
public boolean communicationInitiated()
Description copied from interface:CloudReturns true if communication has already been initiated (and perhaps completed).- Specified by:
communicationInitiatedin interfaceCloud
-
getLocalFirstSeen
public long getLocalFirstSeen(BugInstance b)
-
-