Skip to content

Commit 1f0aaa0

Browse files
committed
Support run's languages
1 parent 86f7b58 commit 1f0aaa0

File tree

40 files changed

+62055
-198
lines changed

40 files changed

+62055
-198
lines changed

src/cds-converter/src/main/kotlin/org/icpclive/export/clics/ClicsExporter.kt

+15-8
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ private fun OrganizationInfo.toClicsOrg() = Organization(
5454
logo = listOfNotNull(logo?.toClicsMedia())
5555
)
5656

57+
private fun LanguageInfo.toClicsLang() = Language(
58+
id = id.value,
59+
name = name,
60+
extensions = extensions
61+
)
62+
63+
5764
private fun MediaType.toClicsMedia() = when (this) {
5865
is MediaType.Object -> null
5966
is MediaType.Image -> File("image", Url(url))
@@ -106,12 +113,12 @@ object ClicsExporter {
106113
it.toJudgmentType()
107114
}
108115

109-
private val unknownLanguage = Language(
110-
"unknown",
116+
private val unknownLanguage = LanguageInfo(
117+
id = "unknown".toLanguageId(),
118+
name = "unknown",
119+
extensions = emptyList()
111120
)
112121

113-
private val languages = listOf(unknownLanguage)
114-
115122
private suspend fun <ID, T> FlowCollector<EventProducer>.updateEvent(id: ID, data: T, block : (ID, String, T?) -> Event) = emit {
116123
block(id, it, data)
117124
}
@@ -216,7 +223,7 @@ object ClicsExporter {
216223
run.id.toString(),
217224
Submission(
218225
id = run.id.toString(),
219-
languageId = unknownLanguage.id,
226+
languageId = (run.languageId ?: unknownLanguage.id).value,
220227
problemId = run.problemId.value,
221228
teamId = run.teamId.value,
222229
time = info.startTimeOrZero + run.time,
@@ -251,6 +258,7 @@ object ClicsExporter {
251258

252259
private val groupsMap = mutableMapOf<GroupId, GroupInfo>()
253260
private val orgsMap = mutableMapOf<OrganizationId, OrganizationInfo>()
261+
private val languagesMap = mutableMapOf<LanguageId, LanguageInfo>()
254262
private val problemsMap = mutableMapOf<ProblemId, ProblemInfo>()
255263
private val teamsMap = mutableMapOf<TeamId, TeamInfo>()
256264

@@ -262,18 +270,17 @@ object ClicsExporter {
262270
for (type in judgmentTypes.values) {
263271
updateEvent(type.id, type, ::JudgementTypeEvent)
264272
}
265-
for (language in languages) {
266-
updateEvent(language.id, language, ::LanguageEvent)
267-
}
268273
}
269274
diff(problemsMap, newInfo.problemList, { id }, { toClicsProblem() }) { id, token, data -> ProblemEvent(id.value, token, data) }
270275
diffChange(groupsMap, newInfo.groupList, { id }, { toClicsGroup() }) { id, token, data -> GroupEvent(id.value, token, data) }
271276
diffChange(orgsMap, newInfo.organizationList, { id }, { toClicsOrg() }) { id, token, data -> OrganizationEvent(id.value, token, data) }
277+
diffChange(languagesMap, newInfo.languagesList + unknownLanguage, { id }, { toClicsLang() }) { id, token, data -> LanguageEvent(id.value, token, data) }
272278

273279
diff(teamsMap, newInfo.teamList, { id }, TeamInfo::toClicsTeam) { id, token, data -> TeamEvent(id.value, token, data) }
274280

275281
diffRemove(groupsMap, newInfo.groupList, { id }) { id, token, data -> GroupEvent(id.value, token, data) }
276282
diffRemove(orgsMap, newInfo.organizationList, { id }) { id, token, data -> OrganizationEvent(id.value, token, data) }
283+
diffRemove(languagesMap, newInfo.languagesList + unknownLanguage, { id }) { id, token, data -> LanguageEvent(id.value, token, data) }
277284
}
278285

279286
private suspend fun FlowCollector<EventProducer>.processAnalytics(message: AnalyticsMessage) {

src/cds-converter/src/main/kotlin/org/icpclive/export/pcms/PCMSExporter.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ object PCMSExporter {
8484
is RunResult.ICPC, is RunResult.InProgress -> "0"
8585
is RunResult.IOI -> result.score.sum().toString()
8686
})
87-
//setAttribute("language-id", "")
87+
setAttributeIfNotNull("language-id", info.languageId?.value)
8888
setAttribute("run-id", info.id.toString())
8989
setAttribute("outcome", convertOutcome((info.result as? RunResult.ICPC)?.verdict))
9090
}

src/cds/core/api/core.api

+92-20
Original file line numberDiff line numberDiff line change
@@ -545,17 +545,18 @@ public final class org/icpclive/cds/api/Color$Companion {
545545

546546
public final class org/icpclive/cds/api/ContestInfo {
547547
public static final field Companion Lorg/icpclive/cds/api/ContestInfo$Companion;
548-
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestResultType;Lkotlinx/datetime/Instant;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;JZILkotlin/jvm/internal/DefaultConstructorMarker;)V
549-
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestResultType;Lkotlinx/datetime/Instant;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;JZLkotlin/jvm/internal/DefaultConstructorMarker;)V
550-
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
551-
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
548+
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestResultType;Lkotlinx/datetime/Instant;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;JZILkotlin/jvm/internal/DefaultConstructorMarker;)V
549+
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestResultType;Lkotlinx/datetime/Instant;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;JZLkotlin/jvm/internal/DefaultConstructorMarker;)V
550+
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
551+
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
552552
public final fun component1 ()Ljava/lang/String;
553-
public final fun component10 ()Lorg/icpclive/cds/api/PenaltyRoundingMode;
554-
public final fun component11 ()D
555-
public final fun component12 ()Lorg/icpclive/cds/api/AwardsSettings;
556-
public final fun component13-UwyO8pc ()J
557-
public final fun component14 ()Lorg/icpclive/cds/api/QueueSettings;
558-
public final fun component15 ()Z
553+
public final fun component10 ()Ljava/util/List;
554+
public final fun component11 ()Lorg/icpclive/cds/api/PenaltyRoundingMode;
555+
public final fun component12 ()D
556+
public final fun component13 ()Lorg/icpclive/cds/api/AwardsSettings;
557+
public final fun component14-UwyO8pc ()J
558+
public final fun component15 ()Lorg/icpclive/cds/api/QueueSettings;
559+
public final fun component16 ()Z
559560
public final fun component2 ()Lorg/icpclive/cds/api/ContestStatus;
560561
public final fun component3 ()Lorg/icpclive/cds/api/ContestResultType;
561562
public final fun component4-UwyO8pc ()J
@@ -564,8 +565,8 @@ public final class org/icpclive/cds/api/ContestInfo {
564565
public final fun component7 ()Ljava/util/List;
565566
public final fun component8 ()Ljava/util/List;
566567
public final fun component9 ()Ljava/util/List;
567-
public final fun copy-rmJQ3-o (Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;Z)Lorg/icpclive/cds/api/ContestInfo;
568-
public static synthetic fun copy-rmJQ3-o$default (Lorg/icpclive/cds/api/ContestInfo;Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;ZILjava/lang/Object;)Lorg/icpclive/cds/api/ContestInfo;
568+
public final fun copy-YD_76-U (Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;Z)Lorg/icpclive/cds/api/ContestInfo;
569+
public static synthetic fun copy-YD_76-U$default (Lorg/icpclive/cds/api/ContestInfo;Ljava/lang/String;Lorg/icpclive/cds/api/ContestStatus;Lorg/icpclive/cds/api/ContestResultType;JLkotlin/time/Duration;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;Lorg/icpclive/cds/api/PenaltyRoundingMode;DLorg/icpclive/cds/api/AwardsSettings;JLorg/icpclive/cds/api/QueueSettings;ZILjava/lang/Object;)Lorg/icpclive/cds/api/ContestInfo;
569570
public fun equals (Ljava/lang/Object;)Z
570571
public final fun getAwardsSettings ()Lorg/icpclive/cds/api/AwardsSettings;
571572
public final fun getCdsSupportsFinalization ()Z
@@ -574,6 +575,8 @@ public final class org/icpclive/cds/api/ContestInfo {
574575
public final fun getFreezeTime-FghU774 ()Lkotlin/time/Duration;
575576
public final fun getGroupList ()Ljava/util/List;
576577
public final fun getGroups ()Ljava/util/Map;
578+
public final fun getLanguages ()Ljava/util/Map;
579+
public final fun getLanguagesList ()Ljava/util/List;
577580
public final fun getName ()Ljava/lang/String;
578581
public final fun getOrganizationList ()Ljava/util/List;
579582
public final fun getOrganizations ()Ljava/util/Map;
@@ -610,6 +613,7 @@ public final class org/icpclive/cds/api/ContestInfoKt {
610613
public static final fun getCurrentContestTime (Lorg/icpclive/cds/api/ContestInfo;)J
611614
public static final fun getStartTime (Lorg/icpclive/cds/api/ContestInfo;)Lkotlinx/datetime/Instant;
612615
public static final fun getStartTimeOrZero (Lorg/icpclive/cds/api/ContestInfo;)Lkotlinx/datetime/Instant;
616+
public static final fun languages (Ljava/util/List;)Ljava/util/List;
613617
}
614618

615619
public final class org/icpclive/cds/api/ContestResultType : java/lang/Enum {
@@ -909,6 +913,72 @@ public final class org/icpclive/cds/api/IOIProblemResult$Companion {
909913
public abstract interface annotation class org/icpclive/cds/api/InefficientContestInfoApi : java/lang/annotation/Annotation {
910914
}
911915

916+
public final class org/icpclive/cds/api/LanguageId {
917+
public static final field Companion Lorg/icpclive/cds/api/LanguageId$Companion;
918+
public static final synthetic fun box-impl (Ljava/lang/String;)Lorg/icpclive/cds/api/LanguageId;
919+
public fun equals (Ljava/lang/Object;)Z
920+
public static fun equals-impl (Ljava/lang/String;Ljava/lang/Object;)Z
921+
public static final fun equals-impl0 (Ljava/lang/String;Ljava/lang/String;)Z
922+
public final fun getValue ()Ljava/lang/String;
923+
public fun hashCode ()I
924+
public static fun hashCode-impl (Ljava/lang/String;)I
925+
public fun toString ()Ljava/lang/String;
926+
public static fun toString-impl (Ljava/lang/String;)Ljava/lang/String;
927+
public final synthetic fun unbox-impl ()Ljava/lang/String;
928+
}
929+
930+
public synthetic class org/icpclive/cds/api/LanguageId$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
931+
public static final field INSTANCE Lorg/icpclive/cds/api/LanguageId$$serializer;
932+
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
933+
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
934+
public final fun deserialize-hvNokaU (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/String;
935+
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
936+
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
937+
public final fun serialize-MtJ6cpo (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/String;)V
938+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
939+
}
940+
941+
public final class org/icpclive/cds/api/LanguageId$Companion {
942+
public final fun serializer ()Lkotlinx/serialization/KSerializer;
943+
}
944+
945+
public final class org/icpclive/cds/api/LanguageInfo {
946+
public static final field Companion Lorg/icpclive/cds/api/LanguageInfo$Companion;
947+
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Lkotlin/jvm/internal/DefaultConstructorMarker;)V
948+
public final fun component1-UUN7Iis ()Ljava/lang/String;
949+
public final fun component2 ()Ljava/lang/String;
950+
public final fun component3 ()Ljava/util/List;
951+
public final fun copy-VPaLHWc (Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Lorg/icpclive/cds/api/LanguageInfo;
952+
public static synthetic fun copy-VPaLHWc$default (Lorg/icpclive/cds/api/LanguageInfo;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;ILjava/lang/Object;)Lorg/icpclive/cds/api/LanguageInfo;
953+
public fun equals (Ljava/lang/Object;)Z
954+
public final fun getExtensions ()Ljava/util/List;
955+
public final fun getId-UUN7Iis ()Ljava/lang/String;
956+
public final fun getName ()Ljava/lang/String;
957+
public fun hashCode ()I
958+
public fun toString ()Ljava/lang/String;
959+
}
960+
961+
public synthetic class org/icpclive/cds/api/LanguageInfo$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
962+
public static final field INSTANCE Lorg/icpclive/cds/api/LanguageInfo$$serializer;
963+
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
964+
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
965+
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lorg/icpclive/cds/api/LanguageInfo;
966+
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
967+
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
968+
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lorg/icpclive/cds/api/LanguageInfo;)V
969+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
970+
}
971+
972+
public final class org/icpclive/cds/api/LanguageInfo$Companion {
973+
public final fun serializer ()Lkotlinx/serialization/KSerializer;
974+
}
975+
976+
public final class org/icpclive/cds/api/LanguageKt {
977+
public static final fun toLanguageId (I)Ljava/lang/String;
978+
public static final fun toLanguageId (J)Ljava/lang/String;
979+
public static final fun toLanguageId (Ljava/lang/String;)Ljava/lang/String;
980+
}
981+
912982
public abstract class org/icpclive/cds/api/MediaType {
913983
public static final field Companion Lorg/icpclive/cds/api/MediaType$Companion;
914984
public synthetic fun <init> (ILkotlinx/serialization/internal/SerializationConstructorMarker;)V
@@ -1457,22 +1527,24 @@ public final class org/icpclive/cds/api/RunId$Companion {
14571527

14581528
public final class org/icpclive/cds/api/RunInfo {
14591529
public static final field Companion Lorg/icpclive/cds/api/RunInfo$Companion;
1460-
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
1461-
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
1530+
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;Lkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
1531+
public synthetic fun <init> (Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;Lkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;ZLkotlin/jvm/internal/DefaultConstructorMarker;)V
14621532
public final fun component1-1iip4kg ()Ljava/lang/String;
1533+
public final fun component10 ()Z
14631534
public final fun component2 ()Lorg/icpclive/cds/api/RunResult;
14641535
public final fun component3-Xzdl60o ()Ljava/lang/String;
14651536
public final fun component4-ed2mA_4 ()Ljava/lang/String;
14661537
public final fun component5-UwyO8pc ()J
1467-
public final fun component6-FghU774 ()Lkotlin/time/Duration;
1468-
public final fun component7 ()Lorg/icpclive/cds/api/MediaType;
1469-
public final fun component8 ()Ljava/util/List;
1470-
public final fun component9 ()Z
1471-
public final fun copy-8G9nE0k (Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;Z)Lorg/icpclive/cds/api/RunInfo;
1472-
public static synthetic fun copy-8G9nE0k$default (Lorg/icpclive/cds/api/RunInfo;Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;ZILjava/lang/Object;)Lorg/icpclive/cds/api/RunInfo;
1538+
public final fun component6-GPqwlpk ()Ljava/lang/String;
1539+
public final fun component7-FghU774 ()Lkotlin/time/Duration;
1540+
public final fun component8 ()Lorg/icpclive/cds/api/MediaType;
1541+
public final fun component9 ()Ljava/util/List;
1542+
public final fun copy-9CUUfRs (Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;Lkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;Z)Lorg/icpclive/cds/api/RunInfo;
1543+
public static synthetic fun copy-9CUUfRs$default (Lorg/icpclive/cds/api/RunInfo;Ljava/lang/String;Lorg/icpclive/cds/api/RunResult;Ljava/lang/String;Ljava/lang/String;JLjava/lang/String;Lkotlin/time/Duration;Lorg/icpclive/cds/api/MediaType;Ljava/util/List;ZILjava/lang/Object;)Lorg/icpclive/cds/api/RunInfo;
14731544
public fun equals (Ljava/lang/Object;)Z
14741545
public final fun getFeaturedRunMedia ()Lorg/icpclive/cds/api/MediaType;
14751546
public final fun getId-1iip4kg ()Ljava/lang/String;
1547+
public final fun getLanguageId-GPqwlpk ()Ljava/lang/String;
14761548
public final fun getProblemId-Xzdl60o ()Ljava/lang/String;
14771549
public final fun getReactionVideos ()Ljava/util/List;
14781550
public final fun getResult ()Lorg/icpclive/cds/api/RunResult;

0 commit comments

Comments
 (0)