Data classes in RED FLAGS engine

I think it's the best to start from Notice, so it's at the beginning of the list, then the rest is ordered by classname.

Remark: chapter numbers may not be applicable for documents using Public procurement (2014/24/EU) directive.

Notice.java

Field Type Description
awards List<Award> V. Award of contract
cancelled boolean True if the notice/tender is cancelled.
compl ComplementaryInfo VI. Complementary information
contr ContractingAuthority I. Contracting authority
data Data Data tab
documentFamilyId NoticeID Identifier of the first notice of the document family this notice belongs to.
familyMembers List<Notice> List of family member notices. They usually have only their id field filled.
id NoticeID Notice identifier. Contains the year and the number, has methods to generate TED format and also integer.
indicatorResults Map<String, IndicatorResult> Stores the results of indicators (flag, no-flag, etc.).
left LEFTIinfo III. Legal, economic, financial and technical
lots List<Lot> Information about lots (Between II. and III. chapters, not every notice contains lots.)
objs List<ObjOfTheContract> II. Object of the contract (Certain notices can contain more than one of these, but usually there is only one.)
proc Procedure IV. Procedure
url String TED URL for the Data tab of this notice.

Address.java

Field Type Description
buyerProfileUrl String Address of the buyer profile
city String City
contactPerson String For the attention of
contactPoint String Contact point(s)
country String Country
email String E-mail
fax String Fax
id String Identifier generated and used by MySQLExporter.
infoUrl String Electronic access to information
organizationId String Identifier of the Organization. (Currently not in use.)
phone String Telephone
raw String The address block extracted from the notice.
street String Street and house number.
url String General address of the contracting authority
zip String ZIP code

Award.java

Field Type Description
decisionDate Date V.1.1) Date of contract award decision
id String Identifier generated and used by MySQLExporter.
lotNumber int The lot number given in the award chapter's header.
lotTitle String The lot title given in the award chapter's header.
number int The contract number given in the award chapter's header.
numberOfOffers int Number of offers given in V.2) Information about offers.
rawDecisionDate String V.1.1) Date of contract award decision
rawHeader String The award chapter's header line.
rawLotNumber String The lot number given in the award chapter's header.
rawNumber String The contract number given in the award chapter's header.
rawNumberOfOffers String Number of offers given in V.2) Information about offers.
rawTotalEstimatedValue String Total estimated value given in V.4) Information on value of contract.
rawTotalEstimatedValueVat String VAT information of total estimated value given in V.4) Information on value of contract.
rawTotalFinalValue String Total final value given in V.4) Information on value of contract.
rawTotalFinalValueVat String VAT information of total final value give in V.4) Information on value of contract.
subcontracting String V.5) Information about subcontracting
subcontractingRate double Subcontracting rate parsed from V.5) Information about subcontracting.
totalEstimatedValue long Total estimated value given in V.4) Information on value of contract.
totalEstimatedValueCurr String Currency of total estimated value given in V.4) Information on value of contract.
totalEstimatedValueVat double VAT information of total estimated value given in V.4) Information on value of contract.
totalFinalValue long Total final value given in V.4) Information on value of contract.
totalFinalValueCurr String Currency of total final value given in V.4) Information on value of contract.
totalFinalValueVat double VAT information of total final value given in V.4) Information on value of contract.
winnerOrg Organization V.3) Name and address of economic operator in favour of whom the contract award decision has been taken

To be able to map documents using 2014/24/EU directive, we introduced the following new fields:

Field Type Description
awarded boolean A contract/lot is awarded: yes/no, given in the header of Section V (default value is true)
nonAward String V.1) Information on non-award
rawAwarded String A contract/lot is awarded: yes/no, given in the header of Section V

ContractingAuthority.java

Field Type Description
contractingOrg Organization I.1) Name, addresses and contact point(s)
id String Identifier generated and used by MySQLExporter.
obtainFurtherInfoFromOrg Organization I.1) Name, addresses and contact point(s), "Further information can be obtained from:"
obtainSpecsFromOrg Organization I.1) Name, addresses and contact point(s), "Specifications and additional documents (including documents for competitive dialogue and a dynamic purchasing system) can be obtained from:"
purchasingOnBehalfOfOrg Organization I.4) Contract award on behalf of other contracting authorities
purchasingOnBehalfOfOther boolean Whether the contracting authority is purchasing on behalf of other contracting authorities, given in I.4) Contract award on behalf of other contracting authorities.
rawPurchasingOnBehalfOfOther String Whether the contracting authority is purchasing on behalf of other contracting authorities, given in I.4) Contract award on behalf of other contracting authorities.
sendTendersToOrg Organization I.1) Name, addresses and contact point(s), "Tenders or requests to participate must be sent to:"

ComplementaryInfo.java

Field Type Description
additionalInfo String VI.2 / VI.3) Additional information
genRegFWInfo String VI.3) Information on general regulatory framework (Prior information notice)
guaranteeValue long Bid bond value parsed from additionalInfo.
guaranteeValueCurr String Bid bond currency parsed from additionalInfo.
id String Identifier generated and used by MySQLExporter.
lodgingOfAppeals String VI.3.2 / VI.4.2) Lodging of appeals
obtainLodgingOfAppealsInfoFromOrg Organization VI.3.3 / VI.4.3) Service from which information about the lodging of appeals may be obtained.
rawRelToEUProjects String Whether the contract is related to a project and/or programme financed by European Union funds, given in VI.1 / VI.2) Information about European Union funds.
recurrence String VI.1) Information about recurrence
refsToEUProjects String VI.1 / VI.2) Information about European Union funds, Reference to project(s) and/or programme(s):
relToEUProjects boolean Whether the contract is related to a project and/or programme financed by European Union funds, given in VI.1 / VI.2) Information about European Union funds.
respForAppealOrg Organization VI.3.1 / VI.4.1) Body responsible for appeal procedures

CPV.java

The constructor is not public, use the static findOrCreate method to instantiate this class, this will manage POOL static field which stores all instances.

Field Type Description
id int The CPV code itself.
name String The description of the CPV code in the crawl language.

Data.java

Field Type Description
authorityType Type (AA) Type of authority
awardCriteria Type (AC) Award criteria
bidType Type (TY) Type of bid
contractType Type (NC) Contract
country String (CY) Country
cpvCodes List<CPV> (PC) CPV code
deadline Date (DT) Deadline
deadlineForDocs Date (DD) Deadline for the request of documents
directive String (DI) Directive
documentSent Date (DS) Document sent
documentType Type (TD) Document
id String Identifier generated and used by MySQLExporter.
internetAddress String (IA) Internet address (URL)
nutsCodes List<String> (RC) NUTS code
oj String (OJ) OJ S
originalCpvCodes List<CPV> (OC) Original CPV code
originalLanguage String (OL) Original language
place String (TW) Place
procedureType Type (PR) Procedure
publicationDate Date (PD) Publication date
regulationType Type (RP) Regulation
title String (TI) Title

DisplayLanguage.java

This is an enum of the available display languages on TED. You can use these values in your crawlers configuration.

BG, CS, DA, DE, EL, EN, ES, ET, FI, FR, GA, HR, HU, IT, LT, LV, MT, NL, PL, PT, RO, SK, SL, SV

Duration.java

Field Type Description
begin Date Start date
end Date End date
id String Identifier generated and used by MySQLExporter.
inDays int Duration in days
inMonths int Duration in months
raw String Duration text came from document

Duration has a fill() method which calculates missing fields if possible.

IndicatorResult.java

Field Type Description
description String Flag description (details)
flagCategory String Flag category
indicator String Indicator class name
type IndicatorResultType Result type (see below)
weight double Weight of flag, default is 0.0

IndicatorResultType (IndicatorResult.java)

Enum value Description
FLAG The actual red flag. Only this type will be displayed on the website.
IRRELEVANT_DATA Indicates that the notice is not appropriate for the indicator.
MISSING_DATA Indicates that information needed by the indicator is missing from the notice.
NO_FLAG Means there were no problems with the notice.

LEFTInfo.java

Field Type Description
depositsAndGuarantees String III.1.1) Deposits and guarantees required
executionStaff String III.3.2) Staff responsible for the execution of the service
financialAbility String III.2.2) Economic and financial ability
financingConditions String III.1.2) Main financing conditions and payment arrangements and/or reference to the relevant provisions governing them
id String Identifier generated and used by MySQLExporter.
legalFormToBeTaken String III.1.3) Legal form to be taken by the group of economic operators to whom the contract is to be awarded
otherParticularConditions String III.1.4) Other particular conditions
particularProfession String III.3.1) Information about a particular profession
personalSituation String III.2.1) Personal situation of economic operators, including requirements relating to enrolment on professional or trade registers
qualificationForTheSystem String III.1.1) Qualification for the system (Qualification system without call for competition)
reservedContracts String III.1.2 / III.1.5 / III.2.4) Information about reserved contracts (Qualification system with/without call for competition, Periodic indicative notice with call for competition)
technicalCapacity String III.2.3) Technical capacity

To be able to map documents using 2014/24/EU directive, we introduced the following new fields:

Field Type Description
objRulesAndCritForParticipation String III.1.4) Objective rules and criteria for participation

Lot.java

Field Type Description
additionalInfo String 5) Additional information about lots
cpvCodes List<CPV> 2) Common procurement vocabulary (CPV)
differentDuration Duration 4) Indication about different date for duration of contract or starting/completion
id String Identifier generated and used by MySQLExporter.
number int Lot number given in lot header.
quantity String 3) Quantity or scope
rawCpvCodes String 2) Common procurement vocabulary (CPV)
rawNumber String Lot number given in lot header.
shortDescription String 1) Short description
title String Lot title given in lot header.

NoticeID.java

It's not a usual POJO, it has special methods instead to handle notice identifiers easily. The constructors are backed with a validator mechanism which will throw exception when you pass invalid data.

Method Description
NoticeID(int number, int year) Creates a new instance.
NoticeID(String id) Creates a new instance from an identifier using TED fromat (number-year).
int get() Returns the integer representation of the identifier (year * 1000000 + number). This format makes it easier to order notices by ID.
int number() Returns the number part of the identifier.
String toString() Returns the identifier in TED format (number-year).
int year() Returns the year part of the identifier.

ObjOfTheContract.java

Field Type Description
additionalInfo String II.8) Additional information (Periodic indicative notice with/without call for competition)
contractTitle String II.1.1) Title attributed to the contract by the contracting authority
contractTypeInfo String II.1.2) Type of contract and location of works, place of delivery or of performance
duration Duration II.3) Duration of the contract or time limit for completion
estimatedValue long Estimated value parsed from various fields (frameworkAgreement, shortDescription, totalQuantity, lots).
estimatedValueCurr String Currency of estimated value parsed from other fields (frameworkAgreement, shortDescription, totalQuantity, lots).
estimatedValueMin long Minimal estimated value parsed from other fields (frameworkAgreement, shortDescription, totalQuantity, lots).
financingConditions String II.6.2) Main financing conditions and payment arrangements and/or reference to the relevant provisions governing them (Periodic indicative notice with call for competition)
frameworkAgreement String II.1.4) Information on framework agreement
frameworkDuration Duration II.1.4) Information on framework agreement, Duration of the framework agreement
frameworkParticipants int Number of participants parsed from frameworkAgreement.
gpa String II.1.7) Information about Government Procurement Agreement (GPA)
id String Identifier generated and used by MySQLExporter.
lots String II.1.8) Lots
options String II.2.2) Information about options
pcFaDps String II.1.3) Information about a public contract, a framework agreement or a dynamic purchasing system (DPS)
placeOfPerformance String II.1.2) Type of contract and location of works, place of delivery or of performance
plannedStartDate Date II.5) Scheduled date for start of award procedures and duration of the contract (Periodic indicative notice without call for competition)
rawPlannedStartDate String II.5) Scheduled date for start of award procedures and duration of the contract (Periodic indicative notice without call for competition)
rawRenewable String Whether the contract is subject to renewal, given in II.2.3) Information about renewals
rawRenewalCount String Count of renewals given in II.2.3) Information about renewals.
rawTotalFinalValue String Total final value given in II.2.1) Total final value of contract(s).
rawTotalFinalValueVat String VAT information of total final value given in II.2.1) Total final value of contract(s).
renewable boolean Whether the contract is subject to renewal, given in II.2.3) Information about renewals
renewalCount int Count of renewals given in II.2.3) Information about renewals.
renewalDuration Duration Duraion of renewals given in II.2.3) Information about renewals.
shortDescription String II.1.5) Short description of the contract or purchase(s)
totalFinalValue long Total final value parsed from various fields (rawTotalFinalValue, awards).
totalFinalValueCurr String Currency of total final value parsed from various fields (rawTotalFinalValue, awards).
totalFinalValueVat double VAT information of total final value parsed from various fields (rawTotalFinalValue, awards).
totalQuantity String II.2.1) Total quantity or scope
variants String II.1.9) Information about variants

To be able to map documents using 2014/24/EU directive, we introduced the following new fields:

Field Type Description
awardCriteria String II.2.5) Award criteria
lotEstimatedValue long Estimated value of lot given in II.2.6) Estimated value
lotEstimatedValueCurr String Currency of lot estimated value given in II.2.6) Estimated value
lotTitle String II.2.1) Title
rawLotCpvCodes String II.2.2) Additional CPV code(s)
rawLotEstimatedValue String Estimated value of lot given in II.2.6) Estimated value

Organization.java

Field Type Description
address Address Address
code String Code parsed from the second line of the organization blocks (between name and address)
id String Identifier generated and used by MySQLExporter.
mainActivities List<String> I.3) Main activity
name String Name of the organization
rawMainActivities String I.3) Main activity
type String I.2) Type of the contracting authority

Procedure.java

Field Type Description
awardCriteria String IV.2.1) Award criteria
awardCriteriaCondCount int Count of evaluation criterions in awardCriteria.
awardCriteriaPaymentDeadline boolean Whether a payment deadline appears as evaluation criterion in awardCriteria.
awardCriteriaPriceCond boolean Whether an evaluation criterion for the price appears in awardCriteria.
awardCriteriaPriceWeight double Weight of evaluation criterion for the price.
awardCriteriaSubCondCount int Count of sub-criterions in awardCriteria.
awardCriteriaWeightSum double Sum of criterion weight in awardCriteria.
countOfInvitedOperators int Count of invited operators parsed from limitOfInvitedOperators.
electronicAuction String IV.2.2) Information about electronic auction
fileRefNumber String IV.2.1 /IV.3.1) File reference number attributed by the contracting entity
id String Identifier generated and used by MySQLExporter.
interestDeadline Date IV.3.2) Time-limit for receipt of expressions of interest (Periodic indicative notice with call for competition)
invitationsDispatchDate Date IV.3.5) Date of dispatch of invitations to tender or to participate to selected candidates
limitOfInvitedOperators String IV.1.2) Limitations on the number of operators who will be invited to tender or to participate
minMaintainDuration Duration IV.3.6 / IV.3.7) Minimum time frame during which the tenderer must maintain the tender
obtainingSpecs String IV 3.1./ IV.3.3) Conditions for obtaining specifications and additional documents
openingConditions String IV.3.7 / IV.3.8) Conditions for opening of tenders
openingDate Date Opening date parsed from openingConditions and from VI.3.
previousPublication String IV.3.2) Previous publication(s) concerning the same contract
procedureTypeInfo String IV.1.1) Type of procedure
qualificationSystemDuration Duration IV.2.2) Duration of the qualification system
rawCountOfInvitedOperators String Opening date parsed from openingConditions and from VI.3.
rawInterestDeadline String IV.3.2) Time-limit for receipt of expressions of interest (Periodic indicative notice with call for competition)
rawInvitationsDispatchDate String IV.3.5) Date of dispatch of invitations to tender or to participate to selected candidates
reductionOfOperators String IV.1.3) Reduction of the number of operators during the negotiation or dialogue
renewalInfo String IV.2.3) Information about renewals (Qualification system with call for competition)
tenderLanguage String IV.3.4 / IV.3.5 / IV.3.6) Language(s) in which tenders or requests to participate may be drawn up

To be able to map documents using 2014/24/EU directive, we introduced the following new fields:

Field Type Description
faDps String IV.1.3) Information about a framework agreement or a dynamic purchasing system
gpa String IV.1.8) Information about the Government Procurement Agreement (GPA)

Tab.java

This is an enum of the available tabs on TED. It's used by TedInterface. Numbers represent the tabid GET parameter in TED URL-s.

CURRENT_LANGUAGE("0"), ORIGINAL_LANGUAGE("1"), SUMMARY("2"), DATA("3"), DOCUMENT_FAMILY("4");

Type.java

Type has the same structure as CPV. It's backed by a pool (use findOrCreate) and it stores an ID and a name.

Field Type Description
id int The ID generated by MetadataParser, see below.
name String The category name in the crawl language.

Types are used in Data to store values of similar fields which act like categories (e.g. contract type). They can be recognized by the format of their values: "X - Something", so they start with a one-character ID and it's followed by a category name. MetadataParser builds up the id field from the field name found on the Data tab and the one-character ID, and the name will be the category name.

For example if you see this line on TED:

|| -|-|- TD | Document | 3 - Contract notice

The Type instance will have the following values:

id   = "TD-3"
name = "Contract notice"

This way, all Type instances can be loaded into the same pool/table.