Skip to content

Commit b274071

Browse files
authored
Merge pull request #501 from 1c-syntax/feature/optMdoRefs
Оптимизация API для получения представления ссылок на объекты, включая локализацию представления
2 parents f87b3c6 + fafcb8f commit b274071

File tree

4 files changed

+45
-0
lines changed

4 files changed

+45
-0
lines changed

src/main/java/com/github/_1c_syntax/bsl/mdclasses/CF.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -161,6 +161,15 @@ default List<Subsystem> includedSubsystems(MdoReference mdoReference, boolean ad
161161
.toList();
162162
}
163163

164+
/**
165+
* Возвращает локализованное представление ссылки на объект метаданных с учетом используемого варианта языка разработки
166+
* @param md Объект метаданных, принадлежащий MDClasses
167+
* @return Строковое представление ссылки
168+
*/
169+
default String getMdoRefLocal(MD md) {
170+
return md.getMdoRef(getScriptVariant());
171+
}
172+
164173
@Override
165174
default ModuleType getModuleTypeByURI(URI uri) {
166175
return getModulesByType().getOrDefault(uri, ModuleType.UNKNOWN);

src/main/java/com/github/_1c_syntax/bsl/mdo/MD.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import com.github._1c_syntax.bsl.mdo.support.MultiLanguageString;
2525
import com.github._1c_syntax.bsl.mdo.support.ObjectBelonging;
26+
import com.github._1c_syntax.bsl.mdo.support.ScriptVariant;
2627
import com.github._1c_syntax.bsl.support.SupportVariant;
2728
import com.github._1c_syntax.bsl.types.MDOType;
2829
import com.github._1c_syntax.bsl.types.MdoReference;
@@ -60,6 +61,25 @@ default MDOType getMdoType() {
6061
*/
6162
MdoReference getMdoReference();
6263

64+
/**
65+
* Строковое представление MDO-Ссылки на объект, локализованное для указанного языка разработки
66+
*/
67+
default String getMdoRef(ScriptVariant scriptVariant) {
68+
var mdoReference = getMdoReference();
69+
if (scriptVariant == ScriptVariant.ENGLISH) {
70+
return mdoReference.getMdoRef();
71+
} else {
72+
return mdoReference.getMdoRefRu();
73+
}
74+
}
75+
76+
/**
77+
* Строковое представление MDO-Ссылки на объект
78+
*/
79+
default String getMdoRef() {
80+
return getMdoReference().getMdoRef();
81+
}
82+
6383
/**
6484
* Принадлежность объекта конфигурации (собственный или заимствованный)
6585
*/

src/test/java/com/github/_1c_syntax/bsl/mdo/EnumTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,15 @@
2121
*/
2222
package com.github._1c_syntax.bsl.mdo;
2323

24+
import com.github._1c_syntax.bsl.mdo.support.ScriptVariant;
2425
import com.github._1c_syntax.bsl.test_utils.MDTestUtils;
26+
import com.github._1c_syntax.bsl.types.MdoReference;
2527
import org.junit.jupiter.params.ParameterizedTest;
2628
import org.junit.jupiter.params.aggregator.ArgumentsAccessor;
2729
import org.junit.jupiter.params.provider.CsvSource;
2830

31+
import static org.assertj.core.api.Assertions.assertThat;
32+
2933
class EnumTest {
3034
@ParameterizedTest
3135
@CsvSource(
@@ -38,5 +42,16 @@ class EnumTest {
3842
)
3943
void test(ArgumentsAccessor argumentsAccessor) {
4044
var mdo = MDTestUtils.getMDWithSimpleTest(argumentsAccessor);
45+
46+
var mdoRef = MdoReference.create(argumentsAccessor.getString(2));
47+
var mdoRefString = mdoRef.getMdoRef();
48+
var mdoRefStringRu = mdoRef.getMdoRefRu();
49+
50+
assertThat(mdo.getMdoReference()).isEqualTo(mdoRef);
51+
assertThat(mdo.getMdoRef(ScriptVariant.ENGLISH)).isEqualTo(mdoRefString);
52+
assertThat(mdo.getMdoRef(ScriptVariant.UNKNOWN)).isEqualTo(mdoRefStringRu);
53+
assertThat(mdo.getMdoRef(ScriptVariant.RUSSIAN)).isEqualTo(mdoRefStringRu);
54+
55+
assertThat(mdo.getMdoRef()).isEqualTo(mdo.getMdoRef(ScriptVariant.ENGLISH));
4156
}
4257
}

src/test/java/com/github/_1c_syntax/bsl/test_utils/MDTestUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ public String createJson(Object obj) {
110110
xstream.omitField(clazz, "plainItems");
111111
xstream.omitField(clazz, "commonModulesByName");
112112
xstream.omitField(clazz, "childrenByMdoRef");
113+
xstream.omitField(clazz, "mdoRef");
113114

114115
} catch (ClassNotFoundException e) {
115116
throw new RuntimeException(e);

0 commit comments

Comments
 (0)