Пример #1
0
def buildTransactionDict(cdifFile, transactionDict, control):
    """ Reads transactions from a CDIF file into a dictionary """
    transactionCount = 0

    for line in cdifFile:
        line = line.strip()

        # if the line is the start of an entity
        if line.startswith("(Transaction FM"):
            transactionEntity = TransactionEntity()

            transactionEntity.setCdifId(line.split("M")[1])
            setRSFCounter(transactionEntity.getCdifId())

            for line in cdifFile:
                line = line.strip()
                if line.startswith("(uniqueName "):
                    transactionCode = line.split("\"")[1]
                    if transactionCode.startswith("T"):
                        transactionEntity.setTransactionNumber(
                            int(transactionCode[1:]))
                    else:
                        transactionEntity.setName(transactionCode)
                elif line.startswith("(creationTime "):
                    timeString = line.split("\"")[1]
                    transactionEntity.setCreationTime(
                        datetime.strptime(timeString, '%Y-%m-%dT%H:%M:%S'))
                elif line.startswith("(latestTime "):
                    timeString = line.split("\"")[1]
                    transactionEntity.setLatestTime(
                        datetime.strptime(timeString, '%Y-%m-%dT%H:%M:%S'))
                elif line.startswith("(author "):
                    transactionEntity.setAuthor(line.split("\"")[1])
                elif line.startswith("(nextTransaction "):
                    transactionId = line.split("\"")[1]
                    if transactionId != "":
                        transactionEntity.setNextTransaction(transactionId)
                elif line.startswith("(previousTransaction "):
                    transactionId = line.split("\"")[1]
                    if transactionId != "":
                        transactionEntity.setPreviousTransaction(transactionId)
                elif line == ")":
                    transactionCount += 1
                    transactionDict.addPreBuiltEntity(transactionEntity)
                    control.setLatestTime(transactionEntity.getLatestTime())
                    control.addAuthor(transactionEntity.getAuthor())
                    break

            if control.isLimiting(
            ) and transactionCount == control.getMaxTransactions():
                break
Пример #2
0
def writeAuthors(inputFile, control):
    
    inputFile = open(inputFile, 'r')
    
    authorsFile = open("authorsWithIDs.txt", 'w')
    nameFile = open("authorsFullNames.txt", 'w')
    emailFile = open("authorsEmailAddresses.txt", 'w') 
    
    for line in inputFile:
        line = line.strip()
        
        # if the line is the start of an entity
        if line.startswith("(Author FM"):
            authorEntity = AuthorEntity()
            
            authorEntity.setCdifId(int(line.split("M")[1]))
            setRSFCounter(authorEntity.getCdifId())
            
            for line in inputFile:
                line = line.strip()
                if line.startswith("(identifier "):
                    authorEntity.setIdentifier(line.split("\"")[1])
                elif line.startswith("(fullName "):
                    authorEntity.setFullName(line.split("\"")[1])
                elif line.startswith("(emailAddress "):
                    authorEntity.setEmailAddress(line.split("\"")[1])
                elif line.startswith(")"):
                    authorId = authorEntity.getCdifId()
                    authorIdentifier = authorEntity.getIdentifier()
                    authorName = authorEntity.getFullName()
                    authorEmail = authorEntity.getEmailAddress()
                    lineToWrite = str(authorId) + "\t\"" + authorIdentifier + "\"\n";
                    authorsFile.write(lineToWrite)
                    if authorName != authorIdentifier:
                        lineToWrite = str(authorId) + "\t\"" + authorName + "\"\n";
                        nameFile.write(lineToWrite)
                    if authorEmail != "":
                        lineToWrite = str(authorId) + "\t\"" + authorEmail + "\"\n";
                        emailFile.write(lineToWrite)
                    break
            
    authorsFile.close()
    nameFile.close()
    emailFile.close()
    
    inputFile.close()
    
    return EX_OK
Пример #3
0
def writeReleases(inputFile, control):

    inputFile = open(inputFile, 'r')

    releasesFile = open("releasesWithIDs.txt", 'w')
    timeFile = open("artefactTime.txt", 'a')

    for line in inputFile:
        line = line.strip()

        # if the line is the start of an entity
        if line.startswith("(Release FM"):
            releaseEntity = ReleaseEntity()

            releaseEntity.setCdifId(int(line.split("M")[1]))
            setRSFCounter(releaseEntity.getCdifId())

            for line in inputFile:
                line = line.strip()
                if line.startswith("(name "):
                    releaseEntity.setName(line.split("\"")[1])
                elif line.startswith("(creationTime "):
                    timeString = line.split("\"")[1]
                    if timeString != "":
                        releaseEntity.setCreationTime(
                            datetime.strptime(timeString, '%Y-%m-%dT%H:%M:%S'))
                elif line.startswith(")"):
                    releaseId = releaseEntity.getCdifId()
                    releaseName = releaseEntity.getName()
                    lineToWrite = str(
                        releaseId) + "\t\"" + releaseName + "\"\n"
                    releasesFile.write(lineToWrite)
                    if not (releaseEntity.getCreationTime() is None):
                        releaseTime = convertTimeToUNIX(
                            releaseEntity.getCreationTime())
                        timeInfo = str(releaseId) + "\t\"" + str(
                            releaseTime) + "\"\n"
                        timeFile.write(timeInfo)
                    break

    releasesFile.close()
    timeFile.close()

    inputFile.close()

    return EX_OK
Пример #4
0
def buildReleaseRevisionDict(cdifFile, releaseRevisionDict):
    """ Reads release revisions from a CDIF file into a dictionary """
    for line in cdifFile:
        line = line.strip()

        # if the line is the start of an entity
        if line.startswith("(ReleaseRevision FM"):
            releaseRevisionEntity = ReleaseRevisionEntity()

            releaseRevisionEntity.setCdifId(int(line.split("M")[1]))
            setRSFCounter(releaseRevisionEntity.getCdifId())

            for line in cdifFile:
                line = line.strip()
                if line.startswith("(release "):
                    releaseRevisionEntity.setRelease(line.split("\"")[1])
                elif line.startswith("(revision "):
                    releaseRevisionEntity.setRevision(line.split("\"")[1])
                elif line.startswith(")"):
                    releaseRevisionDict.add(releaseRevisionEntity)
                    break
Пример #5
0
def buildRevisionDict(cdifFile, revisionDict, control):
    """ Reads revisions from a CDIF file into a dictionary """
    for line in cdifFile:
        line = line.strip()

        # if the line is the start of an entity
        if line.startswith("(Revision FM"):
            revisionEntity = RevisionEntity()

            revisionEntity.setCdifId(int(line.split("M")[1]))
            setRSFCounter(revisionEntity.getCdifId())

            for line in cdifFile:
                line = line.strip()
                if line.startswith("(name "):
                    revisionEntity.setName(line.split("\"")[1])
                elif line.startswith("(creationTime "):
                    timeString = line.split("\"")[1]
                    revisionEntity.setCreationTime(
                        datetime.strptime(timeString, '%Y-%m-%dT%H:%M:%S'))
                elif line.startswith("(revisionOf "):
                    revisionEntity.setSourceFileUniqueName(line.split("\"")[1])
                elif line.startswith("(author "):
                    revisionEntity.setAuthor(line.split("\"")[1])
                elif line.startswith("(nextRevision "):
                    revisionId = line.split("\"")[1]
                    if revisionId != "":
                        revisionEntity.setNextRevisionId(revisionId)
                elif line.startswith("(previousRevision "):
                    revisionId = line.split("\"")[1]
                    if revisionId != "":
                        revisionEntity.setPreviousRevisionId(revisionId)
                elif line.startswith("(partOfTransaction "):
                    revisionEntity.setTransaction(line.split("\"")[1])
                elif line.startswith("(deletedByTransaction "):
                    revisionEntity.setDeletingTransaction(line.split("\"")[1])
                elif line == ")":
                    if control.isTimeValid(revisionEntity.getCreationTime()):
                        revisionDict.addPrepared(revisionEntity)
                    break
Пример #6
0
def buildFileDict(cdifFile, fileDict, control):
    """ Reads files from a CDIF file into a dictionary """
    for line in cdifFile:
        line = line.strip()

        # if the line is the start of an entity
        if line.startswith("(SourceFile FM"):
            fileEntity = SourceFileEntity()

            fileEntity.setCdifId(int(line.split("M")[1]))
            setRSFCounter(fileEntity.getCdifId())

            for line in cdifFile:
                line = line.strip()
                if line.startswith("(uniqueName "):
                    fileEntity.setUniqueName(line.split("\"")[1])
                elif line.startswith("(creationTime "):
                    timeString = line.split("\"")[1]
                    fileEntity.setCreationTime(
                        datetime.strptime(timeString, '%Y-%m-%dT%H:%M:%S'))
                elif line.startswith(")"):
                    if control.isTimeValid(fileEntity.getCreationTime()):
                        fileDict.addPrepared(fileEntity)
                    break