From dc74351e0459ee0c5500f24d3080a92e1a1b9157 Mon Sep 17 00:00:00 2001 From: Olyutorskii Date: Mon, 28 Jan 2013 07:28:46 +0900 Subject: [PATCH] =?utf8?q?130128=E7=89=88=E3=82=B9=E3=82=AD=E3=83=BC?= =?utf8?q?=E3=83=9E=E5=AF=BE=E5=BF=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- CHANGELOG.txt | 4 + pom.xml | 16 +- .../mikutoga/pmd}/binio/BoneBuilder.java | 28 +- .../mikutoga/pmd}/binio/JointBuilder.java | 10 +- .../mikutoga/pmd}/binio/MaterialBuilder.java | 14 +- .../mikutoga/pmd}/binio/MorphBuilder.java | 12 +- .../mikutoga/pmd}/binio/PmdExporter.java | 2 +- .../mikutoga/pmd}/binio/PmdExporterBase.java | 32 +- .../mikutoga/pmd}/binio/PmdExporterExt1.java | 12 +- .../mikutoga/pmd}/binio/PmdExporterExt2.java | 8 +- .../mikutoga/pmd}/binio/PmdExporterExt3.java | 18 +- .../mikutoga/pmd}/binio/PmdLoader.java | 6 +- .../mikutoga/pmd}/binio/RigidBuilder.java | 16 +- .../mikutoga/pmd}/binio/ShapeBuilder.java | 12 +- .../mikutoga/pmd}/binio/TextBuilder.java | 10 +- .../mikutoga/pmd}/binio/ToonBuilder.java | 6 +- .../mikutoga/pmd}/binio/package-info.java | 2 +- .../mikutoga/pmd/model/BoneGroup.java | 5 +- .../mikutoga/pmd/model/BoneInfo.java | 27 +- .../mikutoga/pmd/model/DynamicsInfo.java | 2 +- .../mikutoga/pmd/model/IKChain.java | 3 +- .../mikutoga/pmd/model/JointInfo.java | 2 +- .../mikutoga/pmd/model/ListUtil.java | 2 +- .../mikutoga/pmd/model/Material.java | 2 +- .../mikutoga/pmd/model/MorphPart.java | 2 +- .../mikutoga/pmd/model/MorphVertex.java | 2 +- .../mikutoga/pmd/model/PmdModel.java | 2 +- .../mikutoga/pmd/model/RigidGroup.java | 2 +- .../mikutoga/pmd/model/RigidInfo.java | 2 +- .../mikutoga/pmd/model/RigidShape.java | 2 +- .../mikutoga/pmd/model/SerialNumbered.java | 2 +- .../mikutoga/pmd/model/ShadeInfo.java | 2 +- .../mikutoga/pmd/model/Surface.java | 2 +- .../mikutoga/pmd/model/ToonMap.java | 8 +- .../mikutoga/pmd/model/Vertex.java | 2 +- .../mikutoga/pmd/xml/BotherHandler.java} | 8 +- .../java/jp/sfjp/mikutoga/pmd/xml/LocalSchema.java | 164 +++ .../jp/sfjp/mikutoga/pmd/xml/Schema101009.java | 74 + .../jp/sfjp/mikutoga/pmd/xml/Schema130128.java | 74 + .../XmlExporter.java} | 193 ++- .../Xml101009Loader.java => xml/XmlLoader.java} | 366 +++-- .../jp/sfjp/mikutoga/pmd/xml/XmlModelFileType.java | 36 + .../jp/sfjp/mikutoga/pmd/xml/package-info.java | 14 + .../mikutoga/pmd/xml101009/Xml101009Resources.java | 105 -- .../sfjp/mikutoga/pmd/xml101009/package-info.java | 14 - .../java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java | 101 ++ .../jp/sfjp/mikutoga/pmd2xml/CmdLineException.java | 25 + .../jp/sfjp/mikutoga/pmd2xml/ModelFileType.java | 124 ++ .../java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java | 376 +++++ .../java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java | 116 ++ .../mikutoga/pmd2xml/Pmd2Xml.java | 19 +- .../mikutoga/pmd2xml/Pmd2XmlConv.java | 133 +- .../mikutoga/pmd2xml/package-info.java | 2 +- .../jp/sourceforge/mikutoga/pmd2xml/OptInfo.java | 329 ----- .../{xml101009 => xml}/resources/pmdxml-101009.xsd | 0 .../mikutoga/pmd/xml/resources/pmdxml-130128.xsd | 1513 ++++++++++++++++++++ .../pmd/xml101009/resources/pmdxml-101009.dtd | 532 ------- .../mikutoga/pmd2xml/resources/version.properties | 0 .../java/jp/sfjp/mikutoga/pmd2xml/CmdLineTest.java | 100 ++ .../sfjp/mikutoga/pmd2xml/ModelFileTypeTest.java | 98 ++ .../java/jp/sfjp/mikutoga/pmd2xml/OptInfoTest.java | 89 ++ .../jp/sfjp/mikutoga/pmd2xml/OptSwitchTest.java | 138 ++ src/test/java/testdata/CnvAssert.java | 47 +- src/test/java/testdata/pmd101009/xml/XmlTest.java | 49 + .../java/testdata/pmd130128/bone/BoneTest.java | 56 + .../testdata/pmd130128/charset/CharsetTest.java | 56 + .../java/testdata/pmd130128/group/GroupTest.java | 56 + .../java/testdata/pmd130128/i18n/I18nTest.java | 56 + .../java/testdata/pmd130128/ik/IkBoneTest.java | 56 + .../testdata/pmd130128/material/MaterialTest.java | 56 + .../testdata/pmd130128/minimum/MinimumTest.java | 56 + .../java/testdata/pmd130128/morph/MorphTest.java | 56 + .../testdata/pmd130128/numeric/NumericTest.java | 56 + .../java/testdata/pmd130128/rigid/RigidTest.java | 56 + .../java/testdata/pmd130128/small/SmallTest.java | 112 ++ src/test/java/testdata/pmd130128/xml/XmlTest.java | 49 + .../resources/testdata/pmd101009/xml/Readme.txt | 13 + .../resources/testdata/pmd101009/xml/minimum.pmd | Bin 0 -> 1316 bytes .../resources/testdata/pmd101009/xml/namespace.xml | 96 ++ .../resources/testdata/pmd130128/bone/Readme.txt | 13 + .../resources/testdata/pmd130128/bone/allbone.pmd | Bin 0 -> 1968 bytes .../resources/testdata/pmd130128/bone/allbone.xml | 253 ++++ .../testdata/pmd130128/charset/Readme.txt | 27 + .../testdata/pmd130128/charset/charset.pmd | Bin 0 -> 1316 bytes .../testdata/pmd130128/charset/result.xml | 126 ++ .../testdata/pmd130128/charset/source.xml | 115 ++ .../resources/testdata/pmd130128/group/Readme.txt | 18 + .../testdata/pmd130128/group/boneGroup.pmd | Bin 0 -> 1623 bytes .../testdata/pmd130128/group/boneGroup.xml | 154 ++ .../resources/testdata/pmd130128/i18n/Readme.txt | 21 + .../resources/testdata/pmd130128/i18n/i18n.pmd | Bin 0 -> 2107 bytes .../resources/testdata/pmd130128/i18n/i18n.xml | 190 +++ .../resources/testdata/pmd130128/ik/Readme.txt | 21 + .../resources/testdata/pmd130128/ik/ikBone.pmd | Bin 0 -> 1526 bytes .../resources/testdata/pmd130128/ik/ikBone.xml | 158 ++ .../testdata/pmd130128/material/Readme.txt | 36 + .../testdata/pmd130128/material/material.pmd | Bin 0 -> 2001 bytes .../testdata/pmd130128/material/material.xml | 219 +++ .../testdata/pmd130128/minimum/Readme.txt | 18 + .../testdata/pmd130128/minimum/minimum.pmd | Bin 0 -> 1316 bytes .../testdata/pmd130128/minimum/minimum.xml | 96 ++ .../resources/testdata/pmd130128/morph/Readme.txt | 13 + .../testdata/pmd130128/morph/allmorph.pmd | Bin 0 -> 1790 bytes .../testdata/pmd130128/morph/allmorph.xml | 181 +++ .../testdata/pmd130128/numeric/Readme.txt | 49 + .../testdata/pmd130128/numeric/numeric.pmd | Bin 0 -> 1550 bytes .../testdata/pmd130128/numeric/result.xml | 147 ++ .../testdata/pmd130128/numeric/source.xml | 153 ++ .../resources/testdata/pmd130128/rigid/Readme.txt | 13 + .../testdata/pmd130128/rigid/allrigid.pmd | Bin 0 -> 1604 bytes .../testdata/pmd130128/rigid/allrigid.xml | 184 +++ .../resources/testdata/pmd130128/small/Readme.txt | 103 ++ .../testdata/pmd130128/small/onlybone.pmd | Bin 0 -> 1355 bytes .../testdata/pmd130128/small/onlybone.xml | 117 ++ .../testdata/pmd130128/small/onlyjoint.pmd | Bin 0 -> 1645 bytes .../testdata/pmd130128/small/onlyjoint.xml | 186 +++ .../testdata/pmd130128/small/onlymorph.pmd | Bin 0 -> 1629 bytes .../testdata/pmd130128/small/onlymorph.xml | 165 +++ .../testdata/pmd130128/small/onlyrigid.pmd | Bin 0 -> 1438 bytes .../testdata/pmd130128/small/onlyrigid.xml | 145 ++ .../testdata/pmd130128/small/onlytriangle.pmd | Bin 0 -> 1545 bytes .../testdata/pmd130128/small/onlytriangle.xml | 151 ++ .../resources/testdata/pmd130128/xml/Readme.txt | 13 + .../resources/testdata/pmd130128/xml/minimum.pmd | Bin 0 -> 1316 bytes .../resources/testdata/pmd130128/xml/namespace.xml | 96 ++ 125 files changed, 7786 insertions(+), 1343 deletions(-) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/BoneBuilder.java (92%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/JointBuilder.java (95%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/MaterialBuilder.java (93%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/MorphBuilder.java (94%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/PmdExporter.java (93%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/PmdExporterBase.java (96%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/PmdExporterExt1.java (95%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/PmdExporterExt2.java (93%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/PmdExporterExt3.java (94%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/PmdLoader.java (95%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/RigidBuilder.java (93%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/ShapeBuilder.java (95%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/TextBuilder.java (96%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/ToonBuilder.java (91%) rename src/main/java/jp/{sourceforge/mikutoga/pmd/model => sfjp/mikutoga/pmd}/binio/package-info.java (78%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/BoneGroup.java (94%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/BoneInfo.java (86%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/DynamicsInfo.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/IKChain.java (96%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/JointInfo.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/ListUtil.java (99%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/Material.java (99%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/MorphPart.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/MorphVertex.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/PmdModel.java (99%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/RigidGroup.java (97%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/RigidInfo.java (99%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/RigidShape.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/SerialNumbered.java (97%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/ShadeInfo.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/Surface.java (98%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/ToonMap.java (94%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd/model/Vertex.java (99%) rename src/main/java/jp/{sourceforge/mikutoga/pmd2xml/XmlHandler.java => sfjp/mikutoga/pmd/xml/BotherHandler.java} (86%) create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml/LocalSchema.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema101009.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema130128.java rename src/main/java/jp/sfjp/mikutoga/pmd/{xml101009/Xml101009Exporter.java => xml/XmlExporter.java} (88%) rename src/main/java/jp/sfjp/mikutoga/pmd/{xml101009/Xml101009Loader.java => xml/XmlLoader.java} (81%) create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlModelFileType.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml/package-info.java delete mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Resources.java delete mode 100644 src/main/java/jp/sfjp/mikutoga/pmd/xml101009/package-info.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLineException.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd2xml/ModelFileType.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java create mode 100644 src/main/java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd2xml/Pmd2Xml.java (97%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd2xml/Pmd2XmlConv.java (67%) rename src/main/java/jp/{sourceforge => sfjp}/mikutoga/pmd2xml/package-info.java (86%) delete mode 100644 src/main/java/jp/sourceforge/mikutoga/pmd2xml/OptInfo.java rename src/main/resources/jp/sfjp/mikutoga/pmd/{xml101009 => xml}/resources/pmdxml-101009.xsd (100%) create mode 100644 src/main/resources/jp/sfjp/mikutoga/pmd/xml/resources/pmdxml-130128.xsd delete mode 100644 src/main/resources/jp/sfjp/mikutoga/pmd/xml101009/resources/pmdxml-101009.dtd rename src/main/resources/jp/{sourceforge => sfjp}/mikutoga/pmd2xml/resources/version.properties (100%) create mode 100644 src/test/java/jp/sfjp/mikutoga/pmd2xml/CmdLineTest.java create mode 100644 src/test/java/jp/sfjp/mikutoga/pmd2xml/ModelFileTypeTest.java create mode 100644 src/test/java/jp/sfjp/mikutoga/pmd2xml/OptInfoTest.java create mode 100644 src/test/java/jp/sfjp/mikutoga/pmd2xml/OptSwitchTest.java create mode 100644 src/test/java/testdata/pmd101009/xml/XmlTest.java create mode 100644 src/test/java/testdata/pmd130128/bone/BoneTest.java create mode 100644 src/test/java/testdata/pmd130128/charset/CharsetTest.java create mode 100644 src/test/java/testdata/pmd130128/group/GroupTest.java create mode 100644 src/test/java/testdata/pmd130128/i18n/I18nTest.java create mode 100644 src/test/java/testdata/pmd130128/ik/IkBoneTest.java create mode 100644 src/test/java/testdata/pmd130128/material/MaterialTest.java create mode 100644 src/test/java/testdata/pmd130128/minimum/MinimumTest.java create mode 100644 src/test/java/testdata/pmd130128/morph/MorphTest.java create mode 100644 src/test/java/testdata/pmd130128/numeric/NumericTest.java create mode 100644 src/test/java/testdata/pmd130128/rigid/RigidTest.java create mode 100644 src/test/java/testdata/pmd130128/small/SmallTest.java create mode 100644 src/test/java/testdata/pmd130128/xml/XmlTest.java create mode 100644 src/test/resources/testdata/pmd101009/xml/Readme.txt create mode 100644 src/test/resources/testdata/pmd101009/xml/minimum.pmd create mode 100644 src/test/resources/testdata/pmd101009/xml/namespace.xml create mode 100644 src/test/resources/testdata/pmd130128/bone/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/bone/allbone.pmd create mode 100644 src/test/resources/testdata/pmd130128/bone/allbone.xml create mode 100644 src/test/resources/testdata/pmd130128/charset/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/charset/charset.pmd create mode 100644 src/test/resources/testdata/pmd130128/charset/result.xml create mode 100644 src/test/resources/testdata/pmd130128/charset/source.xml create mode 100644 src/test/resources/testdata/pmd130128/group/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/group/boneGroup.pmd create mode 100644 src/test/resources/testdata/pmd130128/group/boneGroup.xml create mode 100644 src/test/resources/testdata/pmd130128/i18n/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/i18n/i18n.pmd create mode 100644 src/test/resources/testdata/pmd130128/i18n/i18n.xml create mode 100644 src/test/resources/testdata/pmd130128/ik/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/ik/ikBone.pmd create mode 100644 src/test/resources/testdata/pmd130128/ik/ikBone.xml create mode 100644 src/test/resources/testdata/pmd130128/material/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/material/material.pmd create mode 100644 src/test/resources/testdata/pmd130128/material/material.xml create mode 100644 src/test/resources/testdata/pmd130128/minimum/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/minimum/minimum.pmd create mode 100644 src/test/resources/testdata/pmd130128/minimum/minimum.xml create mode 100644 src/test/resources/testdata/pmd130128/morph/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/morph/allmorph.pmd create mode 100644 src/test/resources/testdata/pmd130128/morph/allmorph.xml create mode 100644 src/test/resources/testdata/pmd130128/numeric/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/numeric/numeric.pmd create mode 100644 src/test/resources/testdata/pmd130128/numeric/result.xml create mode 100644 src/test/resources/testdata/pmd130128/numeric/source.xml create mode 100644 src/test/resources/testdata/pmd130128/rigid/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/rigid/allrigid.pmd create mode 100644 src/test/resources/testdata/pmd130128/rigid/allrigid.xml create mode 100644 src/test/resources/testdata/pmd130128/small/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/small/onlybone.pmd create mode 100644 src/test/resources/testdata/pmd130128/small/onlybone.xml create mode 100644 src/test/resources/testdata/pmd130128/small/onlyjoint.pmd create mode 100644 src/test/resources/testdata/pmd130128/small/onlyjoint.xml create mode 100644 src/test/resources/testdata/pmd130128/small/onlymorph.pmd create mode 100644 src/test/resources/testdata/pmd130128/small/onlymorph.xml create mode 100644 src/test/resources/testdata/pmd130128/small/onlyrigid.pmd create mode 100644 src/test/resources/testdata/pmd130128/small/onlyrigid.xml create mode 100644 src/test/resources/testdata/pmd130128/small/onlytriangle.pmd create mode 100644 src/test/resources/testdata/pmd130128/small/onlytriangle.xml create mode 100644 src/test/resources/testdata/pmd130128/xml/Readme.txt create mode 100644 src/test/resources/testdata/pmd130128/xml/minimum.pmd create mode 100644 src/test/resources/testdata/pmd130128/xml/namespace.xml diff --git a/CHANGELOG.txt b/CHANGELOG.txt index 44148b5..47f2ff5 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -6,8 +6,12 @@ Pmd2XML 変更履歴 X.XXX.X (20XX-XX-XX) ・Maven3対応。 + ・コマンドラインオプションを刷新。 ・XML出力改行コードの指定が可能になる。 ・モーフ数0のモデルデータを読み書きできないバグに対処。(チケット#23394) + ・130128版新スキーマで同じIKボーンからの複数IKチェーンを可能に。 +  (チケット#30587) + ・130128版新スキーマで「ikBone」タグを「sourceBone」タグに変更 1.102.4 (2010-10-09) ・TogaGem1.105.2のバグ修正(接続ボーンを持たない剛体の件)に対処。 diff --git a/pom.xml b/pom.xml index a47130c..b2d4a3c 100644 --- a/pom.xml +++ b/pom.xml @@ -94,7 +94,7 @@ ${project.mainconf}/checks.xml false - jp.sourceforge.mikutoga.pmd2xml.Pmd2Xml + jp.sfjp.mikutoga.pmd2xml.Pmd2Xml @@ -112,7 +112,7 @@ jp.sourceforge.mikutoga togagem - 2.101.3-SNAPSHOT + 2.102.2 compile @@ -129,11 +129,11 @@ org.apache.maven.plugins maven-enforcer-plugin - 1.1.1 + 1.2 - [2.2,) + [3.0,) [1.6,) @@ -270,7 +270,7 @@ org.apache.maven.plugins maven-surefire-plugin - 2.12.4 + 2.13 false true @@ -299,7 +299,7 @@ org.apache.maven.plugins maven-pmd-plugin - 2.7.1 + 2.7.1 ${maven.compiler.target} @@ -453,7 +453,7 @@ org.apache.maven.plugins maven-surefire-report-plugin - 2.12.4 + 2.13 false @@ -499,7 +499,7 @@ org.apache.maven.plugins maven-pmd-plugin - 2.7.1 + 2.7.1 false ${maven.compiler.target} diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/BoneBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/BoneBuilder.java similarity index 92% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/BoneBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/BoneBuilder.java index 0ae6376..9cd895b 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/BoneBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/BoneBuilder.java @@ -5,19 +5,19 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.util.Iterator; import java.util.LinkedList; import java.util.List; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.BoneGroup; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.IKChain; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.parser.ParseStage; import jp.sourceforge.mikutoga.pmd.BoneType; -import jp.sourceforge.mikutoga.pmd.model.BoneGroup; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.IKChain; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.pmd.parser.PmdBoneHandler; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; @@ -187,10 +187,10 @@ class BoneBuilder implements PmdBoneHandler { * {@inheritDoc} * @param parentId {@inheritDoc} * @param tailId {@inheritDoc} - * @param ikId {@inheritDoc} + * @param srcId {@inheritDoc} */ @Override - public void pmdBoneLink(int parentId, int tailId, int ikId){ + public void pmdBoneLink(int parentId, int tailId, int srcId){ BoneInfo prevBone = null; if(0 <= parentId && parentId < PmdLimits.MAX_BONE){ prevBone = this.boneList.get(parentId); @@ -201,18 +201,18 @@ class BoneBuilder implements PmdBoneHandler { nextBone = this.boneList.get(tailId); } - BoneInfo ikBone = null; + BoneInfo srcBone = null; if(this.currentBone.getBoneType() == BoneType.LINKEDROT){ - ikBone = null; - int ratio = ikId; + srcBone = null; + int ratio = srcId; this.currentBone.setRotationRatio(ratio); - }else if(0 < ikId && ikId < PmdLimits.MAX_BONE){ - ikBone = this.boneList.get(ikId); + }else if(0 < srcId && srcId < PmdLimits.MAX_BONE){ + srcBone = this.boneList.get(srcId); } this.currentBone.setPrevBone(prevBone); this.currentBone.setNextBone(nextBone); - this.currentBone.setIKBone(ikBone); + this.currentBone.setSrcBone(srcBone); return; } diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/JointBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/JointBuilder.java similarity index 95% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/JointBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/JointBuilder.java index a03099b..fb27d16 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/JointBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/JointBuilder.java @@ -5,19 +5,19 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.util.Iterator; import java.util.List; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.JointInfo; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.RigidInfo; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.parser.ParseStage; import jp.sourceforge.mikutoga.pmd.Deg3d; import jp.sourceforge.mikutoga.pmd.Rad3d; import jp.sourceforge.mikutoga.pmd.TripletRange; -import jp.sourceforge.mikutoga.pmd.model.JointInfo; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.RigidInfo; import jp.sourceforge.mikutoga.pmd.parser.PmdJointHandler; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/MaterialBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/MaterialBuilder.java similarity index 93% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/MaterialBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/MaterialBuilder.java index 8ffdaec..178b1f2 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/MaterialBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/MaterialBuilder.java @@ -5,18 +5,18 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.awt.Color; import java.util.Iterator; import java.util.List; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.Material; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.ShadeInfo; +import jp.sfjp.mikutoga.pmd.model.Surface; +import jp.sfjp.mikutoga.pmd.model.ToonMap; import jp.sourceforge.mikutoga.parser.ParseStage; -import jp.sourceforge.mikutoga.pmd.model.Material; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.ShadeInfo; -import jp.sourceforge.mikutoga.pmd.model.Surface; -import jp.sourceforge.mikutoga.pmd.model.ToonMap; import jp.sourceforge.mikutoga.pmd.parser.PmdMaterialHandler; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/MorphBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/MorphBuilder.java similarity index 94% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/MorphBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/MorphBuilder.java index 4e4df22..6e49113 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/MorphBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/MorphBuilder.java @@ -5,21 +5,21 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.util.ArrayList; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.MorphVertex; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.parser.ParseStage; import jp.sourceforge.mikutoga.pmd.MorphType; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.MorphVertex; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.pmd.parser.PmdMorphHandler; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporter.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporter.java similarity index 93% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporter.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporter.java index 0cc9280..da633fd 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporter.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporter.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.io.OutputStream; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterBase.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterBase.java similarity index 96% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterBase.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterBase.java index 645265e..2eb30ec 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterBase.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterBase.java @@ -5,9 +5,8 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; -import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import java.awt.Color; import java.io.IOException; import java.io.OutputStream; @@ -16,24 +15,25 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; +import jp.sfjp.mikutoga.pmd.model.BoneGroup; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.IKChain; +import jp.sfjp.mikutoga.pmd.model.Material; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.MorphVertex; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.SerialNumbered; +import jp.sfjp.mikutoga.pmd.model.ShadeInfo; +import jp.sfjp.mikutoga.pmd.model.Surface; +import jp.sfjp.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.binio.BinaryExporter; import jp.sourceforge.mikutoga.binio.IllegalTextExportException; import jp.sourceforge.mikutoga.math.MkPos2D; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.math.MkVec3D; import jp.sourceforge.mikutoga.pmd.BoneType; +import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import jp.sourceforge.mikutoga.pmd.MorphType; -import jp.sourceforge.mikutoga.pmd.model.BoneGroup; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.IKChain; -import jp.sourceforge.mikutoga.pmd.model.Material; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.MorphVertex; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.SerialNumbered; -import jp.sourceforge.mikutoga.pmd.model.ShadeInfo; -import jp.sourceforge.mikutoga.pmd.model.Surface; -import jp.sourceforge.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; /** @@ -384,9 +384,9 @@ public class PmdExporterBase extends BinaryExporter{ int ratio = bone.getRotationRatio(); dumpLeShort(ratio); }else{ - BoneInfo ik = bone.getIKBone(); - if(ik != null) dumpSerialIdAsShort(ik); - else dumpLeShort(NOIKBONE_ID); + BoneInfo srcBone = bone.getSrcBone(); + if(srcBone != null) dumpSerialIdAsShort(srcBone); + else dumpLeShort(NOIKBONE_ID); } MkPos3D position = bone.getPosition(); diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt1.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt1.java similarity index 95% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt1.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt1.java index c55cedd..1ec7894 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt1.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt1.java @@ -5,19 +5,19 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; -import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; +import jp.sfjp.mikutoga.pmd.model.BoneGroup; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.binio.IllegalTextExportException; +import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import jp.sourceforge.mikutoga.pmd.MorphType; -import jp.sourceforge.mikutoga.pmd.model.BoneGroup; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt2.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt2.java similarity index 93% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt2.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt2.java index 4fcc46e..a6b3b7a 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt2.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt2.java @@ -5,14 +5,14 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; -import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import java.io.IOException; import java.io.OutputStream; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.ToonMap; import jp.sourceforge.mikutoga.binio.IllegalTextExportException; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.ToonMap; +import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt3.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt3.java similarity index 94% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt3.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt3.java index 173b1ab..bb4d994 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdExporterExt3.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdExporterExt3.java @@ -5,24 +5,24 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; -import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import java.io.IOException; import java.io.OutputStream; import java.util.List; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.DynamicsInfo; +import jp.sfjp.mikutoga.pmd.model.JointInfo; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.RigidGroup; +import jp.sfjp.mikutoga.pmd.model.RigidInfo; +import jp.sfjp.mikutoga.pmd.model.RigidShape; import jp.sourceforge.mikutoga.binio.IllegalTextExportException; import jp.sourceforge.mikutoga.pmd.Deg3d; +import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; import jp.sourceforge.mikutoga.pmd.Rad3d; import jp.sourceforge.mikutoga.pmd.RigidShapeType; import jp.sourceforge.mikutoga.pmd.TripletRange; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.DynamicsInfo; -import jp.sourceforge.mikutoga.pmd.model.JointInfo; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.RigidGroup; -import jp.sourceforge.mikutoga.pmd.model.RigidInfo; -import jp.sourceforge.mikutoga.pmd.model.RigidShape; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdLoader.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdLoader.java similarity index 95% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdLoader.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdLoader.java index 9a5f2ac..d81be86 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/PmdLoader.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/PmdLoader.java @@ -5,15 +5,15 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.parser.MmdFormatException; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.pmd.parser.PmdParser; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/RigidBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/RigidBuilder.java similarity index 93% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/RigidBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/RigidBuilder.java index caeb862..6be82b1 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/RigidBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/RigidBuilder.java @@ -5,22 +5,22 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.util.Iterator; import java.util.List; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.DynamicsInfo; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.RigidGroup; +import jp.sfjp.mikutoga.pmd.model.RigidInfo; +import jp.sfjp.mikutoga.pmd.model.RigidShape; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.parser.ParseStage; import jp.sourceforge.mikutoga.pmd.Rad3d; import jp.sourceforge.mikutoga.pmd.RigidBehaviorType; import jp.sourceforge.mikutoga.pmd.RigidShapeType; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.DynamicsInfo; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.RigidGroup; -import jp.sourceforge.mikutoga.pmd.model.RigidInfo; -import jp.sourceforge.mikutoga.pmd.model.RigidShape; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; import jp.sourceforge.mikutoga.pmd.parser.PmdRigidHandler; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/ShapeBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/ShapeBuilder.java similarity index 95% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/ShapeBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/ShapeBuilder.java index 02821f5..2b45216 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/ShapeBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/ShapeBuilder.java @@ -5,20 +5,20 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.util.Iterator; import java.util.List; import java.util.RandomAccess; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.Surface; +import jp.sfjp.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.math.MkPos2D; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.math.MkVec3D; import jp.sourceforge.mikutoga.parser.ParseStage; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.Surface; -import jp.sourceforge.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.pmd.parser.PmdShapeHandler; /** diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/TextBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/TextBuilder.java similarity index 96% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/TextBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/TextBuilder.java index 9a720a8..513d4b6 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/TextBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/TextBuilder.java @@ -5,16 +5,16 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; import java.util.Iterator; import java.util.List; +import jp.sfjp.mikutoga.pmd.model.BoneGroup; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.corelib.I18nText; import jp.sourceforge.mikutoga.parser.ParseStage; -import jp.sourceforge.mikutoga.pmd.model.BoneGroup; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; import jp.sourceforge.mikutoga.pmd.parser.PmdBasicHandler; import jp.sourceforge.mikutoga.pmd.parser.PmdEngHandler; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/ToonBuilder.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/ToonBuilder.java similarity index 91% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/ToonBuilder.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/ToonBuilder.java index a143d80..5f40389 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/ToonBuilder.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/ToonBuilder.java @@ -5,11 +5,11 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.ToonMap; import jp.sourceforge.mikutoga.parser.ParseStage; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.ToonMap; import jp.sourceforge.mikutoga.pmd.parser.PmdLimits; import jp.sourceforge.mikutoga.pmd.parser.PmdToonHandler; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd/binio/package-info.java similarity index 78% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/package-info.java rename to src/main/java/jp/sfjp/mikutoga/pmd/binio/package-info.java index 09c41bc..3bba63b 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/binio/package-info.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/binio/package-info.java @@ -9,6 +9,6 @@ * PMDモデルファイル(*.pmd)用入出力。 */ -package jp.sourceforge.mikutoga.pmd.model.binio; +package jp.sfjp.mikutoga.pmd.binio; /* EOF */ diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/BoneGroup.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java similarity index 94% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/BoneGroup.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java index 6c598d2..8f4f4c7 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/BoneGroup.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.ArrayList; import java.util.Iterator; @@ -15,7 +15,8 @@ import jp.sourceforge.mikutoga.corelib.I18nText; /** * ボーングループ。 * ボーングループ名と0個以上のボーンを配下に持つ。 - * 通し番号0のボーングループは、暗黙に用意される「デフォルトボーングループ」とする。 + * 通し番号0のボーングループは、 + * 暗黙に用意される「デフォルトボーングループ」とする。 */ public class BoneGroup implements SerialNumbered , Iterable { diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/BoneInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java similarity index 86% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/BoneInfo.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java index 5f17397..e5b8714 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/BoneInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import jp.sourceforge.mikutoga.corelib.I18nText; import jp.sourceforge.mikutoga.math.MkPos3D; @@ -21,7 +21,7 @@ public class BoneInfo implements SerialNumbered { private BoneInfo prevBone; private BoneInfo nextBone; - private BoneInfo ikBone; + private BoneInfo srcBone; private final MkPos3D position = new MkPos3D(); @@ -103,20 +103,20 @@ public class BoneInfo implements SerialNumbered { } /** - * このボーンが影響を受けるIKボーンを設定する。 - * @param ikBoneArg IKボーン。ない場合はnullを指定。 + * このボーンが影響を受けるIK元、回転元のソースボーンを設定する。 + * @param ikBoneArg ソースボーン。ない場合はnullを指定。 */ - public void setIKBone(BoneInfo ikBoneArg){ - this.ikBone = ikBoneArg; + public void setSrcBone(BoneInfo ikBoneArg){ + this.srcBone = ikBoneArg; return; } /** - * このボーンが影響を受けるIKボーンを返す。 - * @return IKボーン。ない場合はnull + * このボーンが影響を受けるIK元、回転元のソースボーンを返す。 + * @return ソースボーン。ない場合はnull */ - public BoneInfo getIKBone(){ - return this.ikBone; + public BoneInfo getSrcBone(){ + return this.srcBone; } /** @@ -193,8 +193,11 @@ public class BoneInfo implements SerialNumbered { result.append(" rotraio=").append(this.rotationRatio); }else{ result.append(" ik="); - if(this.ikBone != null) result.append(this.ikBone.getBoneName()); - else result.append("NONE"); + if(this.srcBone != null){ + result.append(this.srcBone.getBoneName()); + }else{ + result.append("NONE"); + } } result.append(" ").append(this.position); diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/DynamicsInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/DynamicsInfo.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java index 6b6f68e..7c98761 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/DynamicsInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; /** * 剛体間力学演算の各種パラメータ。 diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/IKChain.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java similarity index 96% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/IKChain.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java index ece4d56..3fd1749 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/IKChain.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java @@ -5,9 +5,8 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; import java.util.ArrayList; import java.util.Iterator; import java.util.List; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/JointInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/JointInfo.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java index 38967ae..37b098d 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/JointInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import jp.sourceforge.mikutoga.corelib.I18nText; import jp.sourceforge.mikutoga.math.MkPos3D; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/ListUtil.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java similarity index 99% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/ListUtil.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java index 0cc79cb..1a43fbb 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/ListUtil.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/Material.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java similarity index 99% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/Material.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java index 4431227..0f0d30c 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/Material.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.awt.Color; import java.awt.Transparency; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/MorphPart.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/MorphPart.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java index 6e6e26c..693b05d 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/MorphPart.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/MorphVertex.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/MorphVertex.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java index 1fd04b7..ead565b 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/MorphVertex.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.Comparator; import jp.sourceforge.mikutoga.math.MkPos3D; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/PmdModel.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java similarity index 99% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/PmdModel.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java index bfa1b34..7f444dc 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/PmdModel.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.ArrayList; import java.util.Collections; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidGroup.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java similarity index 97% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidGroup.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java index 266964c..7399b4a 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidGroup.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java similarity index 99% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidInfo.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java index ff5bd34..48d73d5 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.ArrayList; import java.util.Collection; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidShape.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidShape.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java index 7a4773d..40c9ad8 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/RigidShape.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import jp.sourceforge.mikutoga.pmd.RigidShapeType; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/SerialNumbered.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java similarity index 97% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/SerialNumbered.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java index fdecaf5..7c73317 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/SerialNumbered.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.Comparator; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/ShadeInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/ShadeInfo.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java index 0d9ccf9..aa61c9f 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/ShadeInfo.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; /** * シェーディング情報。 diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/Surface.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java similarity index 98% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/Surface.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java index b710c12..2d594e5 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/Surface.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.ArrayList; import java.util.Iterator; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/ToonMap.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java similarity index 94% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/ToonMap.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java index ae9f561..d809a58 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/ToonMap.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import java.util.Collections; import java.util.Map; @@ -80,7 +80,8 @@ public class ToonMap { } /** - * このトゥーンファイル構成がデフォルトのトゥーンファイル構成と等しいか判定する。 + * このトゥーンファイル構成が + * デフォルトのトゥーンファイル構成と等しいか判定する。 * @return 等しければtrue */ public boolean isDefaultMap(){ @@ -113,7 +114,8 @@ public class ToonMap { } /** - * 指定インデックスのトゥーンファイル名をデフォルトのトゥーンファイル名にリセットする。 + * 指定インデックスのトゥーンファイル名を + * デフォルトのトゥーンファイル名にリセットする。 * @param idx インデックス値 */ public void resetIndexedToon(int idx){ diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd/model/Vertex.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java similarity index 99% rename from src/main/java/jp/sourceforge/mikutoga/pmd/model/Vertex.java rename to src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java index 7ba6949..35e5ebd 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd/model/Vertex.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd.model; +package jp.sfjp.mikutoga.pmd.model; import jp.sourceforge.mikutoga.math.MkPos2D; import jp.sourceforge.mikutoga.math.MkPos3D; diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/XmlHandler.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/BotherHandler.java similarity index 86% rename from src/main/java/jp/sourceforge/mikutoga/pmd2xml/XmlHandler.java rename to src/main/java/jp/sfjp/mikutoga/pmd/xml/BotherHandler.java index 64198e0..52bebf6 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/XmlHandler.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/BotherHandler.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd2xml; +package jp.sfjp.mikutoga.pmd.xml; import org.xml.sax.ErrorHandler; import org.xml.sax.SAXException; @@ -15,17 +15,17 @@ import org.xml.sax.SAXParseException; * 自製エラーハンドラ。 * 例外を渡されれば即投げる。 */ -final class XmlHandler implements ErrorHandler{ +public final class BotherHandler implements ErrorHandler{ /** * 唯一のシングルトン。 */ - static final ErrorHandler HANDLER = new XmlHandler(); + public static final ErrorHandler HANDLER = new BotherHandler(); /** * 隠しコンストラクタ。 */ - private XmlHandler(){ + private BotherHandler(){ super(); return; } diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml/LocalSchema.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/LocalSchema.java new file mode 100644 index 0000000..a167e86 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/LocalSchema.java @@ -0,0 +1,164 @@ +/* + * local xml schema for PMD-XML + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd.xml; + +import java.io.BufferedInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URL; +import java.util.LinkedList; +import java.util.List; +import javax.xml.XMLConstants; +import javax.xml.transform.Source; +import javax.xml.transform.stream.StreamSource; +import javax.xml.validation.Schema; +import javax.xml.validation.SchemaFactory; +import jp.sourceforge.mikutoga.xml.XmlResourceResolver; +import org.xml.sax.SAXException; + +/** + * XML用各種スキーマのローカル参照解決基盤。 + */ +public abstract class LocalSchema { + + /** + * コンストラクタ。 + */ + protected LocalSchema(){ + super(); + return; + } + + + /** + * XML Schema 用のスキーマファクトリを返す。 + * @return スキーマファクトリ + */ + private static SchemaFactory newSchemaFactory(){ + SchemaFactory schemaFactory = + SchemaFactory.newInstance( + XMLConstants.W3C_XML_SCHEMA_NS_URI + ); + +// schemaFactory.setFeature(name, value); +// schemaFactory.setProperty(name, object); + + schemaFactory.setErrorHandler(BotherHandler.HANDLER); + + return schemaFactory; + } + + /** + * ローカルスキーマをロードする。 + *

任意のリゾルバを指定可能 + * @param resolver リゾルバ + * @param lscs ローカルスキーマ情報の配列 + * @return スキーマ + */ + public static Schema newSchema(XmlResourceResolver resolver, + LocalSchema... lscs ){ + List sourceList = new LinkedList(); + for(LocalSchema lsc : lscs){ + if(lsc == null) continue; + lsc.appendToUriMap(resolver); + + Source local = lsc.getLocalSchemaSource(); + if(local == null) continue; + sourceList.add(local); + } + + SchemaFactory schemaFactory = newSchemaFactory(); + schemaFactory.setResourceResolver(resolver); + + Source[] sources = new Source[sourceList.size()]; + sourceList.toArray(sources); + + Schema result; + try{ + if(sources.length <= 0){ + result = schemaFactory.newSchema(); + }else{ + result = schemaFactory.newSchema(sources); + } + }catch(SAXException e){ // Build error + assert false; + throw new AssertionError(e); + } + + return result; + } + + /** + * オリジナル版スキーマ定義のURIを返す。 + *

nullを返す場合は + * スキーマの自動判定&ダウンロードが求められていると見なされる。 + *

このクラスの実装では常にnullを返す。 + * @return オリジナル版スキーマのURL。 + */ + public abstract URI getOriginalSchema(); + + /** + * ローカルリソース版スキーマ定義のURIを返す。 + *

nullを返す場合は + * スキーマの自動判定&ダウンロードが求められていると見なされる。 + *

このクラスの実装では常にnullを返す。 + * @return ローカルリソース版スキーマのURL。 + */ + public abstract URI getLocalSchema(); + + /** + * スキーマのSourceを返す。 + *

ローカルスキーマのSourceを返す。 + * @return Source 見つからなければnull + */ + public Source getLocalSchemaSource(){ + URI uri; + + uri = getLocalSchema(); + if(uri == null) return null; + + URL url; + try{ + url = uri.toURL(); + }catch(MalformedURLException e){ // Build error + assert false; + throw new AssertionError(e); + } + + InputStream is; + try{ + is = url.openStream(); + }catch(IOException e){ // Build error + assert false; + throw new AssertionError(e); + } + is = new BufferedInputStream(is); + + Source result = new StreamSource(is); + + return result; + } + + /** + * ローカルで解決可能なリソース参照をリゾルバに追加登録する。 + * @param resolver リゾルバ + */ + public void appendToUriMap(XmlResourceResolver resolver){ + URI original = getOriginalSchema(); + URI local = getLocalSchema(); + + if(original == null) return; + + resolver.putRedirected(original, local); + + return; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema101009.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema101009.java new file mode 100644 index 0000000..7ff1f59 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema101009.java @@ -0,0 +1,74 @@ +/* + * xml resources for PMD-XML + * + * License : The MIT License + * Copyright(c) 2010 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd.xml; + +import java.net.URI; +import java.net.URISyntaxException; + +/** + * 101009形式XML各種リソースの定義。 + */ +public class Schema101009 extends LocalSchema{ + + /** 名前空間。 */ + public static final String NS_PMDXML = + "http://mikutoga.sourceforge.jp/xml/ns/pmdxml/101009"; + /** 公開スキーマ。 */ + public static final String SCHEMA_PMDXML = + "http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-101009.xsd"; + /** 版数。 */ + public static final String VER_PMDXML = + "101009"; + /** 代替リソースの相対名。 */ + public static final String LOCAL_SCHEMA_PMDXML = + "resources/pmdxml-101009.xsd"; + + private static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML); + private static final URI RES_SCHEMA_PMDXML; + + private static final Class THISCLASS = Schema101009.class; + + static{ + try{ + RES_SCHEMA_PMDXML = + THISCLASS.getResource(LOCAL_SCHEMA_PMDXML).toURI(); + }catch(URISyntaxException e){ + throw new ExceptionInInitializerError(e); + } + } + + + /** + * 隠しコンストラクタ。 + */ + public Schema101009(){ + super(); + assert this.getClass() == THISCLASS; + return; + } + + + /** + * {@inheritDoc} + * @return {@inheritDoc} + */ + @Override + public URI getOriginalSchema(){ + return URI_SCHEMA_PMDXML; + } + + /** + * {@inheritDoc} + * @return {@inheritDoc} + */ + @Override + public URI getLocalSchema(){ + return RES_SCHEMA_PMDXML; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema130128.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema130128.java new file mode 100644 index 0000000..ef5fcf1 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/Schema130128.java @@ -0,0 +1,74 @@ +/* + * xml resources for PMD-XML + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd.xml; + +import java.net.URI; +import java.net.URISyntaxException; + +/** + * 130128形式XML各種リソースの定義。 + */ +public class Schema130128 extends LocalSchema{ + + /** 名前空間。 */ + public static final String NS_PMDXML = + "http://mikutoga.sourceforge.jp/xml/ns/pmdxml/130128"; + /** 公開スキーマ。 */ + public static final String SCHEMA_PMDXML = + "http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-130128.xsd"; + /** 版数。 */ + public static final String VER_PMDXML = + "130128"; + /** 代替リソースの相対名。 */ + public static final String LOCAL_SCHEMA_PMDXML = + "resources/pmdxml-130128.xsd"; + + private static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML); + private static final URI RES_SCHEMA_PMDXML; + + private static final Class THISCLASS = Schema130128.class; + + static{ + try{ + RES_SCHEMA_PMDXML = + THISCLASS.getResource(LOCAL_SCHEMA_PMDXML).toURI(); + }catch(URISyntaxException e){ + throw new ExceptionInInitializerError(e); + } + } + + + /** + * 隠しコンストラクタ。 + */ + public Schema130128(){ + super(); + assert this.getClass() == THISCLASS; + return; + } + + + /** + * {@inheritDoc} + * @return {@inheritDoc} + */ + @Override + public URI getOriginalSchema(){ + return URI_SCHEMA_PMDXML; + } + + /** + * {@inheritDoc} + * @return {@inheritDoc} + */ + @Override + public URI getLocalSchema(){ + return RES_SCHEMA_PMDXML; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Exporter.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlExporter.java similarity index 88% rename from src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Exporter.java rename to src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlExporter.java index 50f63b9..06a0dea 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Exporter.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlExporter.java @@ -5,13 +5,30 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sfjp.mikutoga.pmd.xml101009; +package jp.sfjp.mikutoga.pmd.xml; import java.awt.Color; import java.io.IOException; import java.io.OutputStream; import java.util.List; import java.util.Map; +import jp.sfjp.mikutoga.pmd.model.BoneGroup; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.DynamicsInfo; +import jp.sfjp.mikutoga.pmd.model.IKChain; +import jp.sfjp.mikutoga.pmd.model.JointInfo; +import jp.sfjp.mikutoga.pmd.model.Material; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.MorphVertex; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.RigidGroup; +import jp.sfjp.mikutoga.pmd.model.RigidInfo; +import jp.sfjp.mikutoga.pmd.model.RigidShape; +import jp.sfjp.mikutoga.pmd.model.SerialNumbered; +import jp.sfjp.mikutoga.pmd.model.ShadeInfo; +import jp.sfjp.mikutoga.pmd.model.Surface; +import jp.sfjp.mikutoga.pmd.model.ToonMap; +import jp.sfjp.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.corelib.I18nText; import jp.sourceforge.mikutoga.math.MkPos2D; import jp.sourceforge.mikutoga.math.MkPos3D; @@ -22,30 +39,13 @@ import jp.sourceforge.mikutoga.pmd.MorphType; import jp.sourceforge.mikutoga.pmd.Rad3d; import jp.sourceforge.mikutoga.pmd.RigidShapeType; import jp.sourceforge.mikutoga.pmd.TripletRange; -import jp.sourceforge.mikutoga.pmd.model.BoneGroup; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.DynamicsInfo; -import jp.sourceforge.mikutoga.pmd.model.IKChain; -import jp.sourceforge.mikutoga.pmd.model.JointInfo; -import jp.sourceforge.mikutoga.pmd.model.Material; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.MorphVertex; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.RigidGroup; -import jp.sourceforge.mikutoga.pmd.model.RigidInfo; -import jp.sourceforge.mikutoga.pmd.model.RigidShape; -import jp.sourceforge.mikutoga.pmd.model.SerialNumbered; -import jp.sourceforge.mikutoga.pmd.model.ShadeInfo; -import jp.sourceforge.mikutoga.pmd.model.Surface; -import jp.sourceforge.mikutoga.pmd.model.ToonMap; -import jp.sourceforge.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.xml.BasicXmlExporter; import jp.sourceforge.mikutoga.xml.XmlResourceResolver; /** * 101009形式XMLでPMDモデルデータを出力する。 */ -public class Xml101009Exporter extends BasicXmlExporter{ +public class XmlExporter extends BasicXmlExporter{ private static final String TOP_COMMENT = " MikuMikuDance\n" @@ -93,17 +93,51 @@ public class Xml101009Exporter extends BasicXmlExporter{ private String generator = null; + private XmlModelFileType xmlType = XmlModelFileType.XML_101009; + + /** * コンストラクタ。 * 文字エンコーディングはUTF-8が用いられる。 * @param stream 出力ストリーム */ - public Xml101009Exporter(OutputStream stream){ + public XmlExporter(OutputStream stream){ super(stream); return; } /** + * 出力XMLファイル種別を返す。 + * @return ファイル種別 + */ + public XmlModelFileType getXmlFileType(){ + return this.xmlType; + } + + /** + * 出力XMLファイル種別を設定する。 + * @param type ファイル種別 + */ + public void setXmlFileType(XmlModelFileType type){ + switch(type){ + case XML_101009: + case XML_130128: + this.xmlType = type; + break; + case XML_AUTO: + this.xmlType = XmlModelFileType.XML_130128; + break; + default: + throw new IllegalArgumentException(); + } + + assert this.xmlType == XmlModelFileType.XML_101009 + || this.xmlType == XmlModelFileType.XML_130128; + + return; + } + + /** * Generatorメタ情報を設定する。 * @param generatorArg Generatorメタ情報。表示したくないときはnull */ @@ -133,7 +167,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @throws IOException {@inheritDoc} */ @Override - public Xml101009Exporter ind() throws IOException{ + public XmlExporter ind() throws IOException{ super.ind(); return this; } @@ -144,7 +178,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - protected Xml101009Exporter putUnescapedComment(CharSequence seq) + protected XmlExporter putUnescapedComment(CharSequence seq) throws IOException{ if( ! isBasicLatinOnlyOut() ) return this; if(hasOnlyBasicLatin(seq)) return this; @@ -159,7 +193,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - protected Xml101009Exporter putI18nName(I18nText text) throws IOException{ + protected XmlExporter putI18nName(I18nText text) throws IOException{ for(String lang639 : text.lang639CodeList()){ if(lang639.equals(I18nText.CODE639_PRIMARY)) continue; String name = text.getI18nText(lang639); @@ -181,7 +215,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - protected Xml101009Exporter putNumberedIdAttr(CharSequence attrName, + protected XmlExporter putNumberedIdAttr(CharSequence attrName, CharSequence prefix, int num ) throws IOException{ @@ -199,7 +233,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - protected Xml101009Exporter putNumberedIdAttr(CharSequence attrName, + protected XmlExporter putNumberedIdAttr(CharSequence attrName, CharSequence prefix, SerialNumbered numbered ) throws IOException{ @@ -213,7 +247,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - protected Xml101009Exporter putPosition(MkPos3D position) + protected XmlExporter putPosition(MkPos3D position) throws IOException{ putRawText("").ln(); ind().putRawText("").ln(2); @@ -444,7 +495,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putMaterialList(PmdModel model) + private XmlExporter putMaterialList(PmdModel model) throws IOException{ ind().putRawText("").ln(); @@ -471,7 +522,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putMaterial(Material material, int no) + private XmlExporter putMaterial(Material material, int no) throws IOException{ String bool; if(material.getEdgeAppearance()) bool = "true"; @@ -565,7 +616,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putToonMap(PmdModel model) + private XmlExporter putToonMap(PmdModel model) throws IOException{ ind().putRawText("").ln(); pushNest(); @@ -587,7 +638,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putToon(ToonMap map, int index) + private XmlExporter putToon(ToonMap map, int index) throws IOException{ putRawText("").ln(); @@ -633,7 +684,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putSurfaceList(List surfaceList, + private XmlExporter putSurfaceList(List surfaceList, int index) throws IOException{ ind().putRawText("").ln(); @@ -704,7 +755,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putVertex(Vertex vertex) + private XmlExporter putVertex(Vertex vertex) throws IOException{ String bool; if(vertex.getEdgeAppearance()) bool = "true"; @@ -753,7 +804,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putBoneList(PmdModel model) + private XmlExporter putBoneList(PmdModel model) throws IOException{ ind().putRawText("").ln(); pushNest(); @@ -779,7 +830,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putBone(BoneInfo bone) + private XmlExporter putBone(BoneInfo bone) throws IOException{ I18nText i18nName = bone.getBoneName(); BoneType type = bone.getBoneType(); @@ -806,16 +857,28 @@ public class Xml101009Exporter extends BasicXmlExporter{ MkPos3D position = bone.getPosition(); ind().putPosition(position).ln(); - BoneInfo ikBone = bone.getIKBone(); + BoneInfo srcBone = bone.getSrcBone(); if(bone.getBoneType() == BoneType.LINKEDROT){ ind().putRawText("").ln(); - }else if(ikBone != null){ - ind().putRawText(" "); - String ikBoneName = "Ref:" + ikBone.getBoneName().getText(); + String ikBoneName = "Ref:" + srcBone.getBoneName().getText(); putLineComment(ikBoneName); ln(); } @@ -865,7 +928,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putBoneGroupList(PmdModel model) + private XmlExporter putBoneGroupList(PmdModel model) throws IOException{ ind().putRawText("").ln(); @@ -891,7 +954,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putBoneGroup(BoneGroup group) + private XmlExporter putBoneGroup(BoneGroup group) throws IOException{ I18nText i18nName = group.getGroupName(); @@ -923,7 +986,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putIKChainList(PmdModel model) + private XmlExporter putIKChainList(PmdModel model) throws IOException{ ind().putRawText("").ln(); @@ -948,7 +1011,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putIKChain(IKChain chain) + private XmlExporter putIKChain(IKChain chain) throws IOException{ int depth = chain.getIKDepth(); float weight = chain.getIKWeight(); @@ -982,7 +1045,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putMorphList(PmdModel model) + private XmlExporter putMorphList(PmdModel model) throws IOException{ ind().putRawText("").ln(); pushNest(); @@ -1014,7 +1077,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putMorphPart(MorphPart part) + private XmlExporter putMorphPart(MorphPart part) throws IOException{ I18nText i18nName = part.getMorphName(); String primary = i18nName.getPrimaryText(); @@ -1054,7 +1117,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putRigidList(PmdModel model) + private XmlExporter putRigidList(PmdModel model) throws IOException{ ind().putRawText("").ln(); pushNest(); @@ -1080,7 +1143,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putRigid(RigidInfo rigid) + private XmlExporter putRigid(RigidInfo rigid) throws IOException{ BoneInfo linkedBone = rigid.getLinkedBone(); I18nText i18nName = rigid.getRigidName(); @@ -1136,7 +1199,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putRigidShape(RigidShape shape) + private XmlExporter putRigidShape(RigidShape shape) throws IOException{ RigidShapeType type = shape.getShapeType(); @@ -1172,7 +1235,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putDynamics(DynamicsInfo dynamics) + private XmlExporter putDynamics(DynamicsInfo dynamics) throws IOException{ ind().putRawText("").ln(2); pushNest(); @@ -1248,7 +1311,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putJointList(PmdModel model) + private XmlExporter putJointList(PmdModel model) throws IOException{ ind().putRawText("").ln(); @@ -1273,7 +1336,7 @@ public class Xml101009Exporter extends BasicXmlExporter{ * @return this本体 * @throws IOException 出力エラー */ - private Xml101009Exporter putJoint(JointInfo joint) + private XmlExporter putJoint(JointInfo joint) throws IOException{ I18nText i18nName = joint.getJointName(); diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Loader.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlLoader.java similarity index 81% rename from src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Loader.java rename to src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlLoader.java index 596ac7f..24f1fb5 100644 --- a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Loader.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlLoader.java @@ -5,18 +5,36 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sfjp.mikutoga.pmd.xml101009; +package jp.sfjp.mikutoga.pmd.xml; import java.awt.Color; import java.io.IOException; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import javax.xml.parsers.DocumentBuilder; +import jp.sfjp.mikutoga.pmd.model.BoneGroup; +import jp.sfjp.mikutoga.pmd.model.BoneInfo; +import jp.sfjp.mikutoga.pmd.model.DynamicsInfo; +import jp.sfjp.mikutoga.pmd.model.IKChain; +import jp.sfjp.mikutoga.pmd.model.JointInfo; +import jp.sfjp.mikutoga.pmd.model.ListUtil; +import jp.sfjp.mikutoga.pmd.model.Material; +import jp.sfjp.mikutoga.pmd.model.MorphPart; +import jp.sfjp.mikutoga.pmd.model.MorphVertex; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.model.RigidGroup; +import jp.sfjp.mikutoga.pmd.model.RigidInfo; +import jp.sfjp.mikutoga.pmd.model.RigidShape; +import jp.sfjp.mikutoga.pmd.model.ShadeInfo; +import jp.sfjp.mikutoga.pmd.model.Surface; +import jp.sfjp.mikutoga.pmd.model.ToonMap; +import jp.sfjp.mikutoga.pmd.model.Vertex; import jp.sourceforge.mikutoga.corelib.I18nText; -import jp.sourceforge.mikutoga.pmd.model.ListUtil; import jp.sourceforge.mikutoga.math.MkPos2D; import jp.sourceforge.mikutoga.math.MkPos3D; import jp.sourceforge.mikutoga.math.MkVec3D; @@ -27,37 +45,25 @@ import jp.sourceforge.mikutoga.pmd.Rad3d; import jp.sourceforge.mikutoga.pmd.RigidBehaviorType; import jp.sourceforge.mikutoga.pmd.RigidShapeType; import jp.sourceforge.mikutoga.pmd.TripletRange; -import jp.sourceforge.mikutoga.pmd.model.BoneGroup; -import jp.sourceforge.mikutoga.pmd.model.BoneInfo; -import jp.sourceforge.mikutoga.pmd.model.DynamicsInfo; -import jp.sourceforge.mikutoga.pmd.model.IKChain; -import jp.sourceforge.mikutoga.pmd.model.JointInfo; -import jp.sourceforge.mikutoga.pmd.model.Material; -import jp.sourceforge.mikutoga.pmd.model.MorphPart; -import jp.sourceforge.mikutoga.pmd.model.MorphVertex; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.RigidGroup; -import jp.sourceforge.mikutoga.pmd.model.RigidInfo; -import jp.sourceforge.mikutoga.pmd.model.RigidShape; -import jp.sourceforge.mikutoga.pmd.model.ShadeInfo; -import jp.sourceforge.mikutoga.pmd.model.Surface; -import jp.sourceforge.mikutoga.pmd.model.ToonMap; -import jp.sourceforge.mikutoga.pmd.model.Vertex; +import jp.sourceforge.mikutoga.xml.DomNsUtils; import jp.sourceforge.mikutoga.xml.DomUtils; import jp.sourceforge.mikutoga.xml.TogaXmlException; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; -import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import org.xml.sax.SAXException; /** - * 101009形式XML形式でのモデルファイルを読み込む。 + * XML形式でのモデルファイルを読み込む。 */ -public class Xml101009Loader { +public class XmlLoader { + + private static final String ERR_INVROOT = + "invalid root element[{0}]"; + private static final String ERR_UKVER = + "unknown schema version[{0}]"; - private final DocumentBuilder builder; private PmdModel model; @@ -74,17 +80,19 @@ public class Xml101009Loader { private final Map rigidGroupMap = new HashMap(); + private String rootNamespace = Schema130128.NS_PMDXML; + private XmlModelFileType fileType = XmlModelFileType.XML_AUTO; + /** * コンストラクタ。 - * @param builder ビルダ */ - public Xml101009Loader(DocumentBuilder builder){ + public XmlLoader(){ super(); - this.builder = builder; return; } + /** * 要素からxsd:string型属性値を読み取る。 * @param elem 要素 @@ -147,62 +155,8 @@ public class Xml101009Loader { } /** - * 指定された名前の子要素を1つだけ返す。 - * @param parent 親要素 - * @param tagName 子要素名 - * @return 子要素 - * @throws TogaXmlException 1つも見つからなかった - */ - private static Element getChild(Element parent, String tagName) - throws TogaXmlException{ - return DomUtils.getChild(parent, tagName); - } - - /** - * 親要素が指定された名前の子要素を持つか判定する。 - * @param parent 親要素 - * @param tagName 子要素名 - * @return 指定名の子要素が存在すればtrue - */ - private static boolean hasChild(Element parent, String tagName){ - return DomUtils.hasChild(parent, tagName); - } - - /** - * 指定された名前の子要素のforeachを返す。 - * @param parent 親要素 - * @param childTag 子要素名 - * @return 子要素のforeach - */ - private static Iterable eachChild(Element parent, - String childTag){ - return DomUtils.getEachChild(parent, childTag); - } - - /** - * グローバル名を取得する。 - * 元要素のname属性及びi18nNameタグを持つ子要素が検索対象 - * @param parent 元要素 - * @return グローバル名。なければnull - */ - private static String getGlobalName(Element parent){ - NodeList nodeList = parent.getElementsByTagName("i18nName"); - int length = nodeList.getLength(); - for(int idx = 0; idx < length; idx++){ - Node i18nNameNode = nodeList.item(idx); - Element i18nNameElem = (Element)i18nNameNode; - String lang = i18nNameElem.getAttribute("lang"); - if(lang == null || lang.length() <= 0) continue; - if(lang.equals("en")){ - String name = i18nNameElem.getAttribute("name"); - return name; - } - } - return null; - } - - /** - * brタグで区切られた文字列内容(Mixed content)を改行付き文字列に変換する。 + * brタグで区切られた文字列内容(Mixed content)を + * 改行付き文字列に変換する。 * brタグはその出現回数だけ\nに変換される。 * 生文字列コンテンツ中の\n,\rは削除される。 * 改行文字以外のホワイトスペースは保持される。 @@ -238,13 +192,89 @@ public class Xml101009Loader { return result.toString(); } + + /** + * パース中のXMLファイル種別を返す。 + * @return ファイル種別 + */ + private XmlModelFileType getFileType(){ + return this.fileType; + } + + /** + * パース中のXMLファイル種別を設定する。 + * @param type 具体的なファイル種別 + */ + private void setFileType(XmlModelFileType type){ + if( type != XmlModelFileType.XML_101009 + && type != XmlModelFileType.XML_130128 ){ + throw new IllegalArgumentException(); + } + this.fileType = type; + return; + } + + /** + * ルート要素の名前空間URIを返す。 + * @return 名前空間URI。nullなら名前空間が無いと見なされる + */ + private String getRootNamespace(){ + return this.rootNamespace; + } + + /** + * ルート要素の名前空間URIを設定する。 + * @param name 名前空間URI。nullなら名前空間が無いと見なされる + */ + private void setRootNamespace(String name){ + this.rootNamespace = name; + return; + } + + /** + * 指定された名前の子要素を1つだけ返す。 + * @param parent 親要素 + * @param tagName 子要素名 + * @return 子要素 + * @throws TogaXmlException 1つも見つからなかった + */ + private Element getChild(Element parent, String tagName) + throws TogaXmlException{ + String ns = getRootNamespace(); + Element result = DomNsUtils.getFirstChild(parent, ns, tagName); + return result; + } + + /** + * 親要素が指定された名前の子要素を持つか判定する。 + * @param parent 親要素 + * @param tagName 子要素名 + * @return 指定名の子要素が存在すればtrue + */ + private boolean hasChild(Element parent, String tagName){ + String ns = getRootNamespace(); + return DomNsUtils.hasChild(parent, ns, tagName); + } + + /** + * 指定された名前の子要素のforeachを返す。 + * @param parent 親要素 + * @param childTag 子要素名 + * @return 子要素のforeach + */ + private Iterable eachChild(Element parent, + String childTag){ + String ns = getRootNamespace(); + return DomNsUtils.getEachChild(parent, ns, childTag); + } + /** * 多言語名を取得する。 * @param baseElement 元要素 - * @param text 多言語名 + * @param text 多言語名格納先 * @throws TogaXmlException あるべき属性が存在しない。 */ - private static void buildI18nName(Element baseElement, I18nText text) + private void buildI18nName(Element baseElement, I18nText text) throws TogaXmlException{ String primaryText; primaryText = getStringAttr(baseElement, "name"); @@ -265,19 +295,33 @@ public class Xml101009Loader { /** * XMLのパースを開始する。 + * @param builder ドキュメントビルダ * @param source XML入力 * @return モデルデータ * @throws SAXException 構文エラー * @throws IOException 入力エラー * @throws TogaXmlException 構文エラー */ - public PmdModel parse(InputSource source) + public PmdModel parse(DocumentBuilder builder, InputSource source) throws SAXException, IOException, TogaXmlException{ - Document document = this.builder.parse(source); + Document document = builder.parse(source); + PmdModel result = parse(document); + return result; + } + /** + * XMLのパースを開始する。 + * @param document DOMドキュメント + * @return モデルデータ + * @throws TogaXmlException 構文エラー + */ + public PmdModel parse(Document document) + throws TogaXmlException{ this.model = new PmdModel(); Element pmdModelElem = document.getDocumentElement(); + String namespace = pmdModelElem.getNamespaceURI(); + setRootNamespace(namespace); buildBasicInfo(pmdModelElem); @@ -300,14 +344,33 @@ public class Xml101009Loader { return this.model; } + /** + * DOMからモデル基本情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildBasicInfo(Element pmdModelElem) throws TogaXmlException{ - String primaryName = getStringAttr(pmdModelElem, "name"); - String globalName = getGlobalName(pmdModelElem); + if( ! DomNsUtils.hasNsLocalNameElem(pmdModelElem, + getRootNamespace(), + "pmdModel") ){ + String tagName = pmdModelElem.getTagName(); + String msg = MessageFormat.format(ERR_INVROOT, tagName); + throw new TogaXmlException(msg); + } + + String version = getStringAttr(pmdModelElem, "schemaVersion"); + if(Schema101009.VER_PMDXML.equals(version)){ + setFileType(XmlModelFileType.XML_101009); + }else if(Schema130128.VER_PMDXML.equals(version)){ + setFileType(XmlModelFileType.XML_130128); + }else{ + String msg = MessageFormat.format(ERR_UKVER, version); + throw new TogaXmlException(msg); + } I18nText modelName = this.model.getModelName(); - modelName.setPrimaryText(primaryName); - modelName.setGlobalText(globalName); + buildI18nName(pmdModelElem, modelName); String primaryDescription = null; String globalDescription = null; @@ -333,24 +396,11 @@ public class Xml101009Loader { return; } - private void buildToonMap(Element pmdModelElem) - throws TogaXmlException{ - ToonMap toonMap = this.model.getToonMap(); - - Element toonMapElem = getChild(pmdModelElem, "toonMap"); - - for(Element toonDefElem : eachChild(toonMapElem, "toonDef")){ - String toonFileId = getStringAttr(toonDefElem, "toonFileId"); - int toonIndex = getIntegerAttr(toonDefElem, "index"); - String toonFile = getSjisFileNameAttr(toonDefElem, "winFileName"); - - toonMap.setIndexedToon(toonIndex, toonFile); - this.toonIdxMap.put(toonFileId, toonIndex); - } - - return; - } - + /** + * DOMからボーンリスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildBoneList(Element pmdModelElem) throws TogaXmlException{ Element boneListElem = getChild(pmdModelElem, "boneList"); @@ -383,18 +433,23 @@ public class Xml101009Loader { ListUtil.assignIndexedSerial(boneList); - int serial = 0; + Iterator bit = boneList.iterator(); for(Element boneElem : eachChild(boneListElem, "bone")){ - BoneInfo boneInfo = boneList.get(serial++); + BoneInfo boneInfo = bit.next(); - if(hasChild(boneElem, "ikBone")){ + if(hasChild(boneElem, "ikBone")){ // 101009 only Element ikBoneElem = getChild(boneElem, "ikBone"); String ikBoneId = getStringAttr(ikBoneElem, "boneIdRef"); BoneInfo ikBone = this.boneMap.get(ikBoneId); - boneInfo.setIKBone(ikBone); + boneInfo.setSrcBone(ikBone); + }else if(hasChild(boneElem, "sourceBone")){ // 130128 only + Element srcBoneElem = getChild(boneElem, "sourceBone"); + String srcBoneId = getStringAttr(srcBoneElem, "boneIdRef"); + BoneInfo srcBone = this.boneMap.get(srcBoneId); + boneInfo.setSrcBone(srcBone); }else if(hasChild(boneElem, "rotationRatio")){ - Element ikBoneElem = getChild(boneElem, "rotationRatio"); - int ratio = getIntegerAttr(ikBoneElem, "ratio"); + Element rotElem = getChild(boneElem, "rotationRatio"); + int ratio = getIntegerAttr(rotElem, "ratio"); boneInfo.setRotationRatio(ratio); } @@ -414,6 +469,11 @@ public class Xml101009Loader { return; } + /** + * DOMから頂点リスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildVertexList(Element pmdModelElem) throws TogaXmlException{ Element vertexListElem = getChild(pmdModelElem, "vertexList"); @@ -474,6 +534,11 @@ public class Xml101009Loader { return; } + /** + * DOMからポリゴンリスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildSurfaceList(Element pmdModelElem) throws TogaXmlException{ Element surfaceGroupListElem = @@ -488,8 +553,16 @@ public class Xml101009Loader { this.surfaceGroupMap.put(groupId, surfaceList); } + + return; } + /** + * DOMからポリゴン情報を組み立てる。 + * @param surfaceGroupElem surfaceGroup要素 + * @return ポリゴンリスト + * @throws TogaXmlException 構文エラー + */ private List buildSurface(Element surfaceGroupElem) throws TogaXmlException{ List result = new ArrayList(); @@ -512,6 +585,34 @@ public class Xml101009Loader { return result; } + /** + * DOMからトゥーンマップ情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ + private void buildToonMap(Element pmdModelElem) + throws TogaXmlException{ + ToonMap toonMap = this.model.getToonMap(); + + Element toonMapElem = getChild(pmdModelElem, "toonMap"); + + for(Element toonDefElem : eachChild(toonMapElem, "toonDef")){ + String toonFileId = getStringAttr(toonDefElem, "toonFileId"); + int toonIndex = getIntegerAttr(toonDefElem, "index"); + String toonFile = getSjisFileNameAttr(toonDefElem, "winFileName"); + + toonMap.setIndexedToon(toonIndex, toonFile); + this.toonIdxMap.put(toonFileId, toonIndex); + } + + return; + } + + /** + * DOMからマテリアル情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildMaterialList(Element pmdModelElem) throws TogaXmlException{ Element materialListElem = @@ -596,6 +697,11 @@ public class Xml101009Loader { return; } + /** + * DOMからIKチェーンリスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildIkChainList(Element pmdModelElem) throws TogaXmlException{ Element ikChainListElem = @@ -629,6 +735,11 @@ public class Xml101009Loader { return; } + /** + * DOMからモーフリスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildMorphList(Element pmdModelElem) throws TogaXmlException{ Element morphListElem = @@ -690,6 +801,11 @@ public class Xml101009Loader { return; } + /** + * DOMからボーングループ情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildBoneGroupList(Element pmdModelElem) throws TogaXmlException{ Element boneGroupListElem = @@ -721,6 +837,11 @@ public class Xml101009Loader { return; } + /** + * DOMから剛体リスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildRigidList(Element pmdModelElem) throws TogaXmlException{ Element rigidListElem = @@ -821,6 +942,11 @@ public class Xml101009Loader { return; } + /** + * DOMから剛体グループリスト情報を組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildRigidGroupList(Element pmdModelElem) throws TogaXmlException{ Element rigidGroupListElem = @@ -856,6 +982,11 @@ public class Xml101009Loader { return; } + /** + * DOM内の剛体衝突情報を解決する。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void resolveThroughRigidGroup(Element pmdModelElem) throws TogaXmlException{ Element rigidListElem = @@ -863,9 +994,9 @@ public class Xml101009Loader { List rigidList = this.model.getRigidList(); - int serialNum = 0; + Iterator rit = rigidList.iterator(); for(Element rigidElem : eachChild(rigidListElem, "rigid")){ - RigidInfo rigid = rigidList.get(serialNum++); + RigidInfo rigid = rit.next(); for(Element groupElem : eachChild(rigidElem, "throughRigidGroup")){ String groupId = getStringAttr(groupElem, "rigidGroupIdRef"); @@ -877,6 +1008,11 @@ public class Xml101009Loader { return; } + /** + * DOMからジョイントリストを組み立てる。 + * @param pmdModelElem ルート要素 + * @throws TogaXmlException 構文エラー + */ private void buildJointList(Element pmdModelElem) throws TogaXmlException{ Element jointListElem = diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlModelFileType.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlModelFileType.java new file mode 100644 index 0000000..981e693 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/XmlModelFileType.java @@ -0,0 +1,36 @@ +/* + * MMD model xml file types. + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd.xml; + +/** + * XMLファイルスキーマ種別。 + */ +public enum XmlModelFileType { + + /** + * XMLファイル。 + *

読み込み時のスキーマ判別は自動。 + * 出力時のスキーマ種別は最新。 + */ + XML_AUTO, + + /** + * スキーマ + * http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-101009.xsd + * で定義されたXMLファイル。 + */ + XML_101009, + + /** + * スキーマ + * http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-130128.xsd + * で定義されたXMLファイル。 + */ + XML_130128, + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml/package-info.java new file mode 100644 index 0000000..848c3f0 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd/xml/package-info.java @@ -0,0 +1,14 @@ +/* + * package information for Javadoc + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +/** + * PMDモデル内容をXMLで出力するためのライブラリ。 + */ + +package jp.sfjp.mikutoga.pmd.xml; + +/* EOF */ diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Resources.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Resources.java deleted file mode 100644 index b9985fc..0000000 --- a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/Xml101009Resources.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * xml resources for PMD-XML - * - * License : The MIT License - * Copyright(c) 2010 MikuToga Partners - */ - -package jp.sfjp.mikutoga.pmd.xml101009; - -import java.net.URI; -import java.net.URISyntaxException; -import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.validation.Schema; -import javax.xml.validation.SchemaFactory; -import jp.sourceforge.mikutoga.xml.XmlResourceResolver; -import org.xml.sax.ErrorHandler; -import org.xml.sax.SAXException; - -/** - * 101009形式XML各種リソースの定義。 - */ -public final class Xml101009Resources { - - public static final String NS_PMDXML = - "http://mikutoga.sourceforge.jp/xml/ns/pmdxml/101009"; - public static final String SCHEMA_PMDXML = - "http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-101009.xsd"; - public static final String DTD_PMDXML = - "http://mikutoga.sourceforge.jp/xml/dtd/pmdxml-101009.dtd"; - public static final String VER_PMDXML = - "101009"; - public static final String LOCAL_SCHEMA_PMDXML = - "resources/pmdxml-101009.xsd"; - public static final String LOCAL_DTD_PMDXML = - "resources/pmdxml-101009.dtd"; - - public static final URI URI_SCHEMA_PMDXML = URI.create(SCHEMA_PMDXML); - public static final URI URI_DTD_PMDXML = URI.create(DTD_PMDXML); - public static final URI RES_SCHEMA_PMDXML; - public static final URI RES_DTD_PMDXML; - - private static final Class THISCLASS = Xml101009Resources.class; - - static{ - Object dummy = new Xml101009Resources(); - - try{ - RES_SCHEMA_PMDXML = - THISCLASS.getResource(LOCAL_SCHEMA_PMDXML).toURI(); - RES_DTD_PMDXML = - THISCLASS.getResource(LOCAL_DTD_PMDXML).toURI(); - }catch(URISyntaxException e){ - throw new ExceptionInInitializerError(e); - } - } - - /** - * 隠しコンストラクタ。 - */ - private Xml101009Resources(){ - super(); - assert this.getClass().equals(THISCLASS); - return; - } - - /** - * ビルダの生成。 - * @param handler エラーハンドラ - * @return ビルダ - * @throws SAXException パースエラー - * @throws ParserConfigurationException 構成エラー - */ - public static DocumentBuilder newBuilder(ErrorHandler handler) - throws SAXException, ParserConfigurationException { - XmlResourceResolver resolver = new XmlResourceResolver(); - resolver.putURIMap(URI_SCHEMA_PMDXML, RES_SCHEMA_PMDXML); - resolver.putURIMap(URI_DTD_PMDXML, RES_DTD_PMDXML); - - SchemaFactory schemaFactory = - SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); - schemaFactory.setResourceResolver(resolver); - schemaFactory.setErrorHandler(handler); - Schema schema = schemaFactory.newSchema(); - - DocumentBuilderFactory builderFactory = - DocumentBuilderFactory.newInstance(); - builderFactory.setCoalescing(true); - builderFactory.setExpandEntityReferences(true); - builderFactory.setIgnoringComments(true); - builderFactory.setIgnoringElementContentWhitespace(false); - builderFactory.setNamespaceAware(true); - builderFactory.setValidating(false); - builderFactory.setSchema(schema); - - DocumentBuilder builder = builderFactory.newDocumentBuilder(); - builder.setEntityResolver(resolver); - builder.setErrorHandler(handler); - - return builder; - } - -} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/package-info.java deleted file mode 100644 index fce5203..0000000 --- a/src/main/java/jp/sfjp/mikutoga/pmd/xml101009/package-info.java +++ /dev/null @@ -1,14 +0,0 @@ -/* - * package information for Javadoc - * - * License : The MIT License - * Copyright(c) 2010 MikuToga Partners - */ - -/** - * PMDモデル内容を101009版XMLで出力するためのライブラリ。 - */ - -package jp.sfjp.mikutoga.pmd.xml101009; - -/* EOF */ diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java new file mode 100644 index 0000000..584f177 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLine.java @@ -0,0 +1,101 @@ +/* + * command line parser + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; + +/** + * コマンドラインの1オプションとその引数群に相当。 + */ +class CmdLine { + + private OptSwitch opt; + private List optArgs; + + + /** + * コンストラクタ。 + */ + private CmdLine() { + super(); + return; + } + + + /** + * コマンドライン解析を行う。 + * @param args コマンドライン + * @return 解析されたコマンドライン並び + */ + static List parse(String... args){ + List list = Arrays.asList(args); + return parse(list); + } + + /** + * コマンドライン解析を行う。 + * @param argList コマンドライン + * @return 解析されたコマンドライン並び + */ + static List parse(List argList){ + List result = new LinkedList(); + + Iterator it = argList.iterator(); + while (it.hasNext()) { + String arg = it.next(); + + CmdLine info = new CmdLine(); + result.add(info); + + info.opt = OptSwitch.parse(arg); + + int exArgNum = 0; + if (info.opt != null) { + exArgNum = info.opt.getExArgNum(); + } + info.optArgs = new ArrayList(exArgNum + 1); + + info.optArgs.add(arg); + + for (int argCt = 0; argCt < exArgNum; argCt++) { + if ( ! it.hasNext()) { + break; + } + String exarg = it.next(); + info.optArgs.add(exarg); + } + } + + return result; + } + + + /** + * オプション識別子を返す。 + * @return オプション識別子。 + * オプションを伴わない単純なコマンドライン引数の場合はnullを返す。 + */ + OptSwitch getOptSwitch() { + return this.opt; + } + + /** + * オプションに付随する引数群を返す。 + * @return オプションに付随する引数群。 + * 先頭要素はオプション識別子。 + * 単純なコマンドライン引数の場合は自身が1要素のみを占める。 + */ + List getOptArgs() { + return this.optArgs; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLineException.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLineException.java new file mode 100644 index 0000000..066f886 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/CmdLineException.java @@ -0,0 +1,25 @@ +/* + * command line exception + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd2xml; + +/** + * コマンドライン引数の不備による異常系。 + */ +@SuppressWarnings("serial") +class CmdLineException extends Exception{ + + /** + * コンストラクタ。 + * @param message {@inheritDoc} + */ + public CmdLineException(String message) { + super(message); + return; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/ModelFileType.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/ModelFileType.java new file mode 100644 index 0000000..ae2c411 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/ModelFileType.java @@ -0,0 +1,124 @@ +/* + * MMD model file types. + * + * License : The MIT License + * Copyright(c) 2012 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import jp.sfjp.mikutoga.pmd.xml.XmlModelFileType; + +/** + * モデルファイル種別。 + */ +public enum ModelFileType { + + /** + * 不明。 + */ + NONE, + + /** + * MikuMikuDance ver7 前後で読み書きが可能なPMDファイル。 + */ + PMD, + + /** + * XMLファイル。 + *

読み込み時のスキーマ判別は自動。 + *

書き込み時のスキーマは最新。 + */ + XML_AUTO, + + /** + * スキーマ + * http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-101009.xsd + * で定義されたXMLファイル。 + */ + XML_101009, + + /** + * スキーマ + * http://mikutoga.sourceforge.jp/xml/xsd/pmdxml-130128.xsd + * で定義されたXMLファイル。 + */ + XML_130128, + + ; + + + /** + * コンストラクタ。 + */ + private ModelFileType(){ + return; + } + + /** + * ファイル種別をXMLファイル種別に変換する。 + *

未定義の場合はXML_AUTOを返す。 + * @return XMLファイル種別 + */ + public XmlModelFileType toXmlType(){ + XmlModelFileType result; + + switch(this){ + case XML_101009: + result = XmlModelFileType.XML_101009; + break; + case XML_130128: + result = XmlModelFileType.XML_130128; + break; + case XML_AUTO: + result = XmlModelFileType.XML_AUTO; + break; + default: + result = XmlModelFileType.XML_AUTO; + break; + } + + return result; + } + + /** + * ファイル種別がXMLか判定する。 + * @return XMLならtrue + */ + public boolean isXml(){ + boolean result; + + switch(this){ + case XML_101009: + case XML_130128: + case XML_AUTO: + result = true; + break; + default: + result = false; + break; + } + + return result; + } + + /** + * ファイル種別がPMDか判定する。 + * @return PMDならtrue + */ + public boolean isPmd(){ + boolean result; + + switch(this){ + case PMD: + result = true; + break; + default: + result = false; + break; + } + + return result; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java new file mode 100644 index 0000000..f9c4bc8 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptInfo.java @@ -0,0 +1,376 @@ +/* + * command line argument info + * + * License : The MIT License + * Copyright(c) 2012 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import java.text.MessageFormat; +import java.util.List; + +/** + * コマンドラインオプション情報。 + */ +final class OptInfo { + + private static final String EOL_LF = "\n"; + private static final String EOL_CRLF = "\r\n"; + private static final String EOL_DEFAULT = EOL_LF; + + private static final String FORMAT_PMD = "pmd"; + private static final String FORMAT_XML = "xml"; + private static final String FORMAT_XML101009 = "xml101009"; + private static final String FORMAT_XML130128 = "xml130128"; + + private static final String SFX_PMD = ".pmd"; + private static final String SFX_XML = ".xml"; + + private static final String NL_LF = "lf"; + private static final String NL_CRLF = "crlf"; + + private static final String GENERATOR = + Pmd2Xml.APPNAME + ' ' + Pmd2Xml.APPVER; + + private static final String ERRMSG_UNKNOWN = + "Unknown option : {0}"; + private static final String ERRMSG_MOREARG = + "You need option arg with : {0}"; + private static final String ERRMSG_INTYPE = + "You must specify input format with -iform."; + private static final String ERRMSG_OUTTYPE = + "You must specify output format with -oform."; + private static final String ERRMSG_NOINFILE = + "You must specify input file with -i."; + private static final String ERRMSG_NOOUTFILE = + "You must specify output file with -o."; + private static final String ERRMSG_INVFORM = + "Unknown format : \"{0}\" must be \"pmd\" or \"xml\" " + + "or \"xml101009\" or \"xml130128\""; + private static final String ERRMSG_INVNL = + "Unknown newline : \"{0}\" must be \"lf\" or \"crlf\""; + private static final String ERRMSG_INVBOOL = + "Unknown switch : \"{0}\" must be \"on\" or \"off\""; + + + private boolean needHelp = false; + private ModelFileType inTypes = ModelFileType.NONE; + private ModelFileType outTypes = ModelFileType.NONE; + private String inFilename = null; + private String outFilename = null; + private boolean overwrite = false; + private String newline = EOL_DEFAULT; + private String generator = GENERATOR; + + + /** + * コンストラクタ。 + */ + private OptInfo(){ + super(); + return; + } + + + /** + * フォーマット種別指定子をデコードする。 + * @param arg 文字列 + * @return デコード結果。 + * @throws CmdLineException 不正なフォーマット種別 + */ + private static ModelFileType decodeFormatType(String arg) + throws CmdLineException{ + ModelFileType result; + + if (FORMAT_PMD.equals(arg)){ + result = ModelFileType.PMD; + }else if(FORMAT_XML.equals(arg)){ + result = ModelFileType.XML_AUTO; + }else if(FORMAT_XML101009.equals(arg)){ + result = ModelFileType.XML_101009; + }else if(FORMAT_XML130128.equals(arg)){ + result = ModelFileType.XML_130128; + }else{ + String errMsg = MessageFormat.format(ERRMSG_INVFORM, arg); + throw new CmdLineException(errMsg); + } + + return result; + } + + /** + * 改行文字指定子をデコードする。 + * @param arg 文字列 + * @return デコード結果。 + * @throws CmdLineException 不正なフォーマット種別 + */ + private static String decodeNewline(String arg) + throws CmdLineException{ + String result; + + if (NL_LF.equals(arg)){ + result = EOL_LF; + }else if(NL_CRLF.equals(arg)){ + result = EOL_CRLF; + }else{ + String errMsg = MessageFormat.format(ERRMSG_INVNL, arg); + throw new CmdLineException(errMsg); + } + + return result; + } + + /** + * ブール指定子をデコードする。 + * @param arg 文字列 + * @return デコード結果。 + * @throws CmdLineException 不正なフォーマット種別 + */ + private static boolean decodeBoolean(String arg) + throws CmdLineException{ + boolean result; + + if( "on" .equals(arg) + || "true".equals(arg) + || "yes" .equals(arg) ){ + result = true; + }else if( "off" .equals(arg) + || "false".equals(arg) + || "no" .equals(arg) ){ + result = false; + }else{ + String errMsg = MessageFormat.format(ERRMSG_INVBOOL, arg); + throw new CmdLineException(errMsg); + } + + return result; + } + + /** + * ファイル名からファイル種別を類推する。 + *

拡張子が「pmd」ならPMDファイル、「xml」ならXMLファイル。 + * @param fileName ファイル名 + * @return ファイル種別 + */ + private static ModelFileType getFileType(String fileName){ + ModelFileType result = ModelFileType.NONE; + if(fileName == null) return result; + + String lower = fileName.toLowerCase(); + if (lower.endsWith(SFX_PMD)) result = ModelFileType.PMD; + else if(lower.endsWith(SFX_XML)) result = ModelFileType.XML_AUTO; + + return result; + } + + /** + * コマンドラインを解析する。 + * @param args コマンドライン + * @return オプション情報 + * @throws CmdLineException 不正なコマンドライン + */ + static OptInfo parseOption(String... args) throws CmdLineException{ + OptInfo result = new OptInfo(); + + List cmdLines = CmdLine.parse(args); + for(CmdLine cmd : cmdLines){ + OptSwitch opt = cmd.getOptSwitch(); + if(opt == OptSwitch.OPT_HELP){ + result.needHelp = true; + return result; + } + } + + checkCmdLineList(cmdLines); + + for(CmdLine cmd : cmdLines){ + List optArgs = cmd.getOptArgs(); + String exArg1 = null; + if(optArgs.size() >= 2){ + exArg1 = optArgs.get(1); + } + + OptSwitch opt = cmd.getOptSwitch(); + switch(opt){ + case OPT_HELP: + break; + case OPT_FORCE: + result.overwrite = true; + break; + case OPT_INFILE: + result.inFilename = exArg1; + break; + case OPT_OUTFILE: + result.outFilename = exArg1; + break; + case OPT_NEWLINE: + result.newline = decodeNewline(exArg1); + break; + case OPT_GENOUT: + boolean genout = decodeBoolean(exArg1); + if(genout) result.generator = GENERATOR; + else result.generator = null; + break; + case OPT_IFORM: + ModelFileType itype = decodeFormatType(exArg1); + result.inTypes = itype; + break; + case OPT_OFORM: + ModelFileType otype = decodeFormatType(exArg1); + result.outTypes = otype; + break; + default: + assert false; + throw new AssertionError(); + } + } + + fixFormat(result); + + checkResult(result); + + return result; + } + + /** + * 単純なコマンドラインエラーを検出する。 + *

検出項目は未知のオプションおよび不正な引数の個数 + * @param cmdLines コマンドライン + * @throws CmdLineException 異常系 + */ + private static void checkCmdLineList(List cmdLines) + throws CmdLineException{ + for(CmdLine cmd : cmdLines){ + List optArgs = cmd.getOptArgs(); + assert optArgs.size() > 0; + + String optTxt = optArgs.get(0); + assert optTxt != null; + + OptSwitch opt = cmd.getOptSwitch(); + if(opt == null){ + String errMsg = + MessageFormat.format(ERRMSG_UNKNOWN, optTxt); + throw new CmdLineException(errMsg); + } + + int exArgNum = opt.getExArgNum(); + if(optArgs.size() != 1 + exArgNum){ + String errMsg = + MessageFormat.format(ERRMSG_MOREARG, optTxt); + throw new CmdLineException(errMsg); + } + } + + return; + } + + /** + * ファイルフォーマット情報の推測を行う。 + * @param result オプション情報 + */ + private static void fixFormat(OptInfo result){ + if(result.inTypes == ModelFileType.NONE){ + result.inTypes = getFileType(result.inFilename); + } + + if(result.outTypes == ModelFileType.NONE){ + result.outTypes = getFileType(result.outFilename); + } + + return; + } + + /** + * オプション整合性の事後検査。 + * @param result オプション情報 + * @throws CmdLineException 不正なオプション設定 + */ + private static void checkResult(OptInfo result) + throws CmdLineException{ + if(result.getInFilename() == null){ + throw new CmdLineException(ERRMSG_NOINFILE); + } + + if(result.getOutFilename() == null){ + throw new CmdLineException(ERRMSG_NOOUTFILE); + } + + if(result.getInFileType() == ModelFileType.NONE){ + throw new CmdLineException(ERRMSG_INTYPE); + } + + if(result.getOutFileType() == ModelFileType.NONE){ + throw new CmdLineException(ERRMSG_OUTTYPE); + } + + return; + } + + + /** + * ヘルプ表示が必要か否か判定する。 + * @return 必要ならtrue + */ + boolean needHelp(){ + return this.needHelp; + } + + /** + * 入力ファイル種別を返す。 + * @return 入力ファイル種別 + */ + ModelFileType getInFileType(){ + return this.inTypes; + } + + /** + * 出力ファイル種別を返す。 + * @return 出力ファイル種別 + */ + ModelFileType getOutFileType(){ + return this.outTypes; + } + + /** + * 入力ファイル名を返す。 + * @return 入力ファイル名 + */ + String getInFilename(){ + return this.inFilename; + } + + /** + * 出力ファイル名を返す。 + * @return 出力ファイル名 + */ + String getOutFilename(){ + return this.outFilename; + } + + /** + * 上書きモードか否か返す。 + * @return 上書きモードならtrue + */ + boolean overwriteMode(){ + return this.overwrite; + } + + /** + * XML改行文字を返す。 + * @return 改行文字 + */ + String getNewline(){ + return this.newline; + } + + /** + * ジェネレータ名を返す。 + * @return ジェネレータ名。表示したくない時はnull + */ + String getGenerator(){ + return this.generator; + } + +} diff --git a/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java new file mode 100644 index 0000000..1035a63 --- /dev/null +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/OptSwitch.java @@ -0,0 +1,116 @@ +/* + * command line option definition + * + * License : The MIT License + * Copyright(c) 2013 MikuToga Partners + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * オプションスイッチ群定義。 + */ +enum OptSwitch { + + OPT_HELP (0, "-h", "-help", "-?"), + OPT_INFILE (1, "-i"), + OPT_OUTFILE (1, "-o"), + OPT_FORCE (0, "-f"), + OPT_NEWLINE (1, "-nl"), + OPT_GENOUT (1, "-genout"), + OPT_IFORM (1, "-iform"), + OPT_OFORM (1, "-oform"), + ; + + private static final String HELP_CONSOLE = + "-h : put help message\n\n" + + "-i : specify input file\n" + + "-o : specify output file\n" + + "-f : force overwriting\n\n" + + "-nl : specify XML-newline character" + + " (default:lf)\n" + + "-genout : mark generator-name to XML" + + " (default:on)\n\n" + + "-iform : specify input format explicitly\n" + + "-oform : specify output format explicitly\n\n" + + " bool : \"on\" or \"off\"" + + " or \"true\" or \"false\"" + + " or \"yes\" or \"no\"\n" + + " format : \"pmd\" or \"xml\" or" + + " \"xml101009\" or \"xml130128\"\n" + + " newline : \"lf\" or \"crlf\"\n" + ; + + private static final Map MAP_OPT; + + static{ + Map map = new HashMap(); + + for(OptSwitch opt : values()){ + for(String cmdarg : opt.cmdopts){ + map.put(cmdarg, opt); + } + } + + map = Collections.unmodifiableMap(map); + MAP_OPT = map; + } + + + private final int exArgNum; + private final List cmdopts; + + + /** + * コンストラクタ。 + * @patam argnum 必要な引数の数 + * @param cmdopts オプションスイッチパターン群 + */ + private OptSwitch(int argnum, String... cmdopts) { + this.exArgNum = argnum; + + List optlist; + optlist = Arrays.asList(cmdopts); + optlist = Collections.unmodifiableList(optlist); + this.cmdopts = optlist; + + return; + } + + + /** + * コンソール提示用ヘルプ出力文字列を返す。 + * @return オプションヘルプ文字列 + */ + static String getConsoleHelp(){ + return HELP_CONSOLE; + } + + /** + * 文字列に合致するオプションを返す。 + *

一つのオプションが複数の表記に合致する場合がある。 + * @param cmd 文字列 + * @return オプション種別。合致する物が見つからなければnull + */ + static OptSwitch parse(String cmd){ + OptSwitch result = MAP_OPT.get(cmd); + return result; + } + + + /** + * 各オプションに後続する引数の数を返す。 + *

引数をとらないオプションは0を返す。 + * @return 引数の数 + */ + int getExArgNum(){ + return this.exArgNum; + } + +} diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/Pmd2Xml.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2Xml.java similarity index 97% rename from src/main/java/jp/sourceforge/mikutoga/pmd2xml/Pmd2Xml.java rename to src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2Xml.java index 8e0b3c4..c4c4c07 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/Pmd2Xml.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2Xml.java @@ -5,7 +5,7 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd2xml; +package jp.sfjp.mikutoga.pmd2xml; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -203,7 +203,7 @@ public final class Pmd2Xml { .append('\n'); ERROUT.println(appInfo.toString()); - ERROUT.println(OptInfo.getConsoleHelp()); + ERROUT.println(OptSwitch.getConsoleHelp()); return; } @@ -307,14 +307,19 @@ public final class Pmd2Xml { Pmd2XmlConv converter = new Pmd2XmlConv(); - OptInfo optInfo = OptInfo.parseOption(args); + OptInfo optInfo; + try{ + optInfo = OptInfo.parseOption(args); + }catch(CmdLineException e){ + String optErrMsg = e.getLocalizedMessage(); + errMsg(optErrMsg); + exit(EXIT_OPT); + return; + } + if(optInfo.needHelp()){ putHelp(); exit(EXIT_OK); - }else if(optInfo.hasError()){ - String optErrMsg = optInfo.getErrorMessage(); - errMsg(optErrMsg); - exit(EXIT_OPT); } String inputFile = optInfo.getInFilename(); diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/Pmd2XmlConv.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java similarity index 67% rename from src/main/java/jp/sourceforge/mikutoga/pmd2xml/Pmd2XmlConv.java rename to src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java index 0d3d468..1a9d598 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/Pmd2XmlConv.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java @@ -5,23 +5,29 @@ * Copyright(c) 2010 MikuToga Partners */ -package jp.sourceforge.mikutoga.pmd2xml; +package jp.sfjp.mikutoga.pmd2xml; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import jp.sfjp.mikutoga.pmd.xml101009.Xml101009Exporter; -import jp.sfjp.mikutoga.pmd.xml101009.Xml101009Loader; -import jp.sfjp.mikutoga.pmd.xml101009.Xml101009Resources; +import javax.xml.validation.Schema; +import jp.sfjp.mikutoga.pmd.binio.PmdExporter; +import jp.sfjp.mikutoga.pmd.binio.PmdLoader; +import jp.sfjp.mikutoga.pmd.model.PmdModel; +import jp.sfjp.mikutoga.pmd.xml.BotherHandler; +import jp.sfjp.mikutoga.pmd.xml.LocalSchema; +import jp.sfjp.mikutoga.pmd.xml.Schema101009; +import jp.sfjp.mikutoga.pmd.xml.Schema130128; +import jp.sfjp.mikutoga.pmd.xml.XmlExporter; +import jp.sfjp.mikutoga.pmd.xml.XmlLoader; +import jp.sfjp.mikutoga.pmd.xml.XmlModelFileType; import jp.sourceforge.mikutoga.parser.MmdFormatException; import jp.sourceforge.mikutoga.pmd.IllegalPmdDataException; -import jp.sourceforge.mikutoga.pmd.ModelFileType; -import jp.sourceforge.mikutoga.pmd.model.PmdModel; -import jp.sourceforge.mikutoga.pmd.model.binio.PmdExporter; -import jp.sourceforge.mikutoga.pmd.model.binio.PmdLoader; import jp.sourceforge.mikutoga.xml.TogaXmlException; +import jp.sourceforge.mikutoga.xml.XmlResourceResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -35,33 +41,87 @@ public class Pmd2XmlConv { private String newLine = "\r\n"; private String generator = null; - private final DocumentBuilder builder; - /** * コンストラクタ。 */ public Pmd2XmlConv(){ super(); + return; + } + + + /** + * ドキュメントビルダファクトリを初期化する。 + * @param builderFactory ドキュメントビルダファクトリ + */ + private static void initBuilderFactory( + DocumentBuilderFactory builderFactory ){ + builderFactory.setCoalescing(true); + builderFactory.setExpandEntityReferences(true); + builderFactory.setIgnoringComments(true); + builderFactory.setIgnoringElementContentWhitespace(false); + builderFactory.setNamespaceAware(true); + builderFactory.setValidating(false); + builderFactory.setXIncludeAware(false); +// builderFactory.setFeature(name, value); +// builderFactory.setAttribute(name, value); + + return; + } + + /** + * DOMビルダ生成。 + * @return DOMビルダ + */ + private DocumentBuilder buildBuilder(){ + XmlResourceResolver resolver = new XmlResourceResolver(); + + Schema schema; + + switch(this.inTypes){ + case XML_101009: + schema = LocalSchema.newSchema(resolver, new Schema101009()); + break; + case XML_130128: + schema = LocalSchema.newSchema(resolver, new Schema130128()); + break; + case XML_AUTO: + schema = LocalSchema.newSchema(resolver, + new Schema101009(), new Schema130128()); + break; + default: + throw new IllegalStateException(); + } + + DocumentBuilderFactory builderFactory = + DocumentBuilderFactory.newInstance(); + initBuilderFactory(builderFactory); + builderFactory.setSchema(schema); + + DocumentBuilder result; try{ - this.builder = Xml101009Resources.newBuilder(XmlHandler.HANDLER); - }catch(SAXException e){ - throw new AssertionError(e); + result = builderFactory.newDocumentBuilder(); }catch(ParserConfigurationException e){ + assert false; throw new AssertionError(e); } + result.setEntityResolver(resolver); + result.setErrorHandler(BotherHandler.HANDLER); - return; + return result; } /** * 入力ファイル種別を設定する。 * @param type ファイル種別 + * @throws IllegalArgumentException 具体的な種別を渡さなかった */ public void setInType(ModelFileType type){ if(type == null) throw new NullPointerException(); + if(type == ModelFileType.NONE) throw new IllegalArgumentException(); this.inTypes = type; return; } @@ -77,9 +137,11 @@ public class Pmd2XmlConv { /** * 出力ファイル種別を設定する。 * @param type ファイル種別 + * @throws IllegalArgumentException 具体的な種別を渡さなかった */ public void setOutType(ModelFileType type){ if(type == null) throw new NullPointerException(); + if(type == ModelFileType.NONE) throw new IllegalArgumentException(); this.outTypes = type; return; } @@ -155,6 +217,7 @@ public class Pmd2XmlConv { * @throws MmdFormatException フォーマットエラー * @throws SAXException XMLエラー * @throws TogaXmlException XMLエラー + * @throws IllegalStateException ファイル種別がまた指定されていない */ public PmdModel readModel(InputStream is) throws IOException, @@ -162,17 +225,15 @@ public class Pmd2XmlConv { SAXException, TogaXmlException { PmdModel model = null; - switch(this.inTypes){ - case PMD: + + if(this.inTypes.isPmd()){ model = pmdRead(is); - break; - case XML_101009: + }else if(this.inTypes.isXml()){ model = xmlRead(is); - break; - default: - assert false; - break; + }else{ + throw new IllegalStateException(); } + return model; } @@ -182,21 +243,20 @@ public class Pmd2XmlConv { * @param os 出力ストリーム * @throws IOException 出力エラー * @throws IllegalPmdDataException データの不備 + * @throws IllegalStateException ファイル種別がまた指定されていない */ public void writeModel(PmdModel model, OutputStream os) throws IOException, IllegalPmdDataException { - switch(this.outTypes){ - case PMD: + if(this.outTypes.isPmd()){ pmdOut(model, os); - break; - case XML_101009: + }else if(this.outTypes.isXml()){ xmlOut(model, os); - break; - default: - assert false; - break; + }else{ + throw new IllegalStateException(); } + + return; } /** @@ -242,8 +302,9 @@ public class Pmd2XmlConv { throws IOException, SAXException, TogaXmlException { - Xml101009Loader loader = new Xml101009Loader(this.builder); - PmdModel model = loader.parse(source); + DocumentBuilder builder = buildBuilder(); + XmlLoader loader = new XmlLoader(); + PmdModel model = loader.parse(builder, source); return model; } @@ -271,11 +332,17 @@ public class Pmd2XmlConv { */ private void xmlOut(PmdModel model, OutputStream ostream) throws IOException, IllegalPmdDataException{ - Xml101009Exporter exporter = new Xml101009Exporter(ostream); + XmlExporter exporter = new XmlExporter(ostream); + + XmlModelFileType xmlType = this.outTypes.toXmlType(); + exporter.setXmlFileType(xmlType); exporter.setNewLine(this.newLine); exporter.setGenerator(this.generator); + exporter.putPmdModel(model); + exporter.close(); + return; } diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd2xml/package-info.java similarity index 86% rename from src/main/java/jp/sourceforge/mikutoga/pmd2xml/package-info.java rename to src/main/java/jp/sfjp/mikutoga/pmd2xml/package-info.java index 72a2c1a..21d018e 100644 --- a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/package-info.java +++ b/src/main/java/jp/sfjp/mikutoga/pmd2xml/package-info.java @@ -10,6 +10,6 @@ * Mainエントリは、クラスPmd2Xml。 */ -package jp.sourceforge.mikutoga.pmd2xml; +package jp.sfjp.mikutoga.pmd2xml; /* EOF */ diff --git a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/OptInfo.java b/src/main/java/jp/sourceforge/mikutoga/pmd2xml/OptInfo.java deleted file mode 100644 index 7b8cf71..0000000 --- a/src/main/java/jp/sourceforge/mikutoga/pmd2xml/OptInfo.java +++ /dev/null @@ -1,329 +0,0 @@ -/* - * command line argument info - * - * License : The MIT License - * Copyright(c) 2012 MikuToga Partners - */ - -package jp.sourceforge.mikutoga.pmd2xml; - -import java.text.MessageFormat; -import java.util.HashMap; -import java.util.Map; -import jp.sourceforge.mikutoga.pmd.ModelFileType; - -/** - * コマンドラインオプション情報。 - */ -final class OptInfo { - - private static final String EOL_LF = "\n"; - private static final String EOL_CRLF = "\r\n"; - private static final String EOL_DEFAULT = EOL_LF; - - private static final String GENERATOR = - Pmd2Xml.APPNAME + ' ' + Pmd2Xml.APPVER; - - private static final String HELP_CONSOLE = - "-h : put help message\n" - + "-pmd2xml : convert *.pmd to *.xml\n" - + "-xml2pmd : convert *.xml to *.pmd\n" - + "-i file : specify input file\n" - + "-o file : specify output file\n" - + "-f : force overwriting\n" - + "-lf : use LF as XML-newline (default)\n" - + "-crlf : use CR+LF as XML-newline\n" - + "-gen : print generator to XML (default)\n" - + "-nogen : do not print generator to XML\n" - ; - - private static final String ERRMSG_UNKNOWN = - "Unknown option : {0}"; - private static final String ERRMSG_NODIR = - "You must specify -pmd2xml or -xml2pmd."; - private static final String ERRMSG_NOINFILE = - "You must specify input file with -i."; - private static final String ERRMSG_NOOUTFILE = - "You must specify output file with -o."; - - - private boolean hasError = false; - private String errMsg = null; - - private boolean needHelp = false; - private ModelFileType inTypes = ModelFileType.NONE; - private ModelFileType outTypes = ModelFileType.NONE; - private String inFilename = null; - private String outFilename = null; - private boolean overwrite = false; - private String newline = EOL_DEFAULT; - private String generator = GENERATOR; - - - /** - * コンストラクタ。 - */ - private OptInfo(){ - super(); - return; - } - - - /** - * コマンドラインを解析する。 - * @param args コマンドライン - * @return オプション情報 - */ - static OptInfo parseOption(String... args){ - OptInfo result = new OptInfo(); - - int argIdx = 0; - int argLength = args.length; - - argline: while(argIdx < argLength){ - String arg = args[argIdx]; - - OptSwitch opt = OptSwitch.find(arg); - if(opt == null){ - String errMsg = MessageFormat.format(ERRMSG_UNKNOWN, arg); - result.putErrMsg(errMsg); - break argline; - } - - switch(opt){ - case OPT_HELP: - result.needHelp = true; - break argline; - case OPT_FORCE: - result.overwrite = true; - break; - case OPT_PMD2XML: - result.inTypes = ModelFileType.PMD; - result.outTypes = ModelFileType.XML_101009; - break; - case OPT_XML2PMD: - result.inTypes = ModelFileType.XML_101009; - result.outTypes = ModelFileType.PMD; - break; - case OPT_INFILE: - argIdx++; - if(argIdx >= argLength){ - result.putErrMsg(ERRMSG_NOINFILE); - break argline; - } - result.inFilename = args[argIdx]; - break; - case OPT_OUTFILE: - argIdx++; - if(argIdx >= argLength){ - result.putErrMsg(ERRMSG_NOOUTFILE); - break argline; - } - result.outFilename = args[argIdx]; - break; - case OPT_LF: - result.newline = EOL_LF; - break; - case OPT_CRLF: - result.newline = EOL_CRLF; - break; - case OPT_GEN: - result.generator = GENERATOR; - break; - case OPT_NOGEN: - result.generator = null; - break; - default: - assert false; - String errMsg = MessageFormat.format(ERRMSG_UNKNOWN, arg); - result.putErrMsg(errMsg); - break argline; - } - - if(result.hasError()) return result; - - argIdx++; - } - - if(result.hasError()) return result; - if(result.needHelp()) return result; - - checkResult(result); - - return result; - } - - /** - * オプション整合性の事後検査。 - * @param result オプション情報 - */ - private static void checkResult(OptInfo result){ - if( result.getInFileType() == ModelFileType.NONE - || result.getOutFileType() == ModelFileType.NONE ){ - result.putErrMsg(ERRMSG_NODIR); - return; - } - - if(result.getInFilename() == null){ - result.putErrMsg(ERRMSG_NOINFILE); - return; - } - - if(result.getOutFilename() == null){ - result.putErrMsg(ERRMSG_NOOUTFILE); - return; - } - - return; - } - - /** - * コンソール提示用ヘルプ出力文字列を返す。 - * @return オプションヘルプ文字列 - */ - static String getConsoleHelp(){ - return HELP_CONSOLE; - } - - - /** - * 解析中にエラーが起きたか判定する。 - * @return エラーが起きていればtrue - */ - boolean hasError(){ - return this.hasError; - } - - /** - * エラーメッセージを返す。 - * @return エラーメッセージ。なければnull - */ - String getErrorMessage(){ - return this.errMsg; - } - - /** - * ヘルプ表示が必要か否か判定する。 - * @return 必要ならtrue - */ - boolean needHelp(){ - return this.needHelp; - } - - /** - * 入力ファイル種別を返す。 - * @return 入力ファイル種別 - */ - ModelFileType getInFileType(){ - return this.inTypes; - } - - /** - * 出力ファイル種別を返す。 - * @return 出力ファイル種別 - */ - ModelFileType getOutFileType(){ - return this.outTypes; - } - - /** - * 入力ファイル名を返す。 - * @return 入力ファイル名 - */ - String getInFilename(){ - return this.inFilename; - } - - /** - * 出力ファイル名を返す。 - * @return 出力ファイル名 - */ - String getOutFilename(){ - return this.outFilename; - } - - /** - * 上書きモードか否か返す。 - * @return 上書きモードならtrue - */ - boolean overwriteMode(){ - return this.overwrite; - } - - /** - * XML改行文字を返す。 - * @return 改行文字 - */ - String getNewline(){ - return this.newline; - } - - /** - * ジェネレータ名を返す。 - * @return ジェネレータ名。表示したくない時はnull - */ - String getGenerator(){ - return this.generator; - } - - /** - * オプション解析エラー情報を設定する。 - * @param txt エラー文字列 - */ - private void putErrMsg(String txt){ - this.hasError = true; - this.errMsg = txt; - return; - } - - - /** - * オプションスイッチ群。 - */ - static enum OptSwitch{ - OPT_HELP ("-h", "-help", "-?"), - OPT_XML2PMD ("-xml2pmd"), - OPT_PMD2XML ("-pmd2xml"), - OPT_INFILE ("-i"), - OPT_OUTFILE ("-o"), - OPT_FORCE ("-f"), - OPT_LF ("-lf"), - OPT_CRLF ("-crlf"), - OPT_GEN ("-gen"), - OPT_NOGEN ("-nogen"), - ; - - - /** - * コンストラクタ。 - * @param cmdargs オプションスイッチパターン群 - */ - private OptSwitch(String... cmdargs){ - for(String cmdarg : cmdargs){ - MapHolder.MAP_OPT.put(cmdarg, this); - } - return; - } - - /** - * パターンに合致するオプションを見つける。 - * @param cmd パターン - * @return オプション。見つからなければnull - */ - static OptSwitch find(String cmd){ - OptSwitch result = MapHolder.MAP_OPT.get(cmd); - return result; - } - - - /** - * enumコンストラクタからクラス変数にアクセスできない文法を回避。 - */ - private static class MapHolder{ - static final Map MAP_OPT = - new HashMap(); - } - - } - -} diff --git a/src/main/resources/jp/sfjp/mikutoga/pmd/xml101009/resources/pmdxml-101009.xsd b/src/main/resources/jp/sfjp/mikutoga/pmd/xml/resources/pmdxml-101009.xsd similarity index 100% rename from src/main/resources/jp/sfjp/mikutoga/pmd/xml101009/resources/pmdxml-101009.xsd rename to src/main/resources/jp/sfjp/mikutoga/pmd/xml/resources/pmdxml-101009.xsd diff --git a/src/main/resources/jp/sfjp/mikutoga/pmd/xml/resources/pmdxml-130128.xsd b/src/main/resources/jp/sfjp/mikutoga/pmd/xml/resources/pmdxml-130128.xsd new file mode 100644 index 0000000..6577541 --- /dev/null +++ b/src/main/resources/jp/sfjp/mikutoga/pmd/xml/resources/pmdxml-130128.xsd @@ -0,0 +1,1513 @@ + + + + + + + + + + MikuMikuDance model-data(*.pmd) on XML. + License : The MIT License + Copyright(c) 2013 MikuToga Partners + + + + + + + + + + + + Root element. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + xsd:language except "ja" (Primary-language in MMD) + + + + + + + + + + + + + + Multilingual name. + + + + + + + + + + + + + + + Break line. + + + + + + + + + Free paragraph with break-line. + Any raw-newline(CR,CRLF) will be ignored later. + But, other white-spaces will be preserved. + + + + + + + + + + + + + + + + + Description note about model. + + + + + + + + + License term of usage. + + + + + + + + + Credits for someone. + + + + + + + + + Meta-information of model. + Use free. + but, some meta-name has recommended usage. + + "generator" (Generator application name) + + "siteURL" (Website URL) + + "imageURL" (Thumbnail image URL) + + + + + + + + + + + + + + + Material list. + All visual things can be tracked from here. + + + + + + + + + + + + + + + + + + + + + Material definition. + Colors, shading, any other definitions. + + + + + + + + + + + + + + + + + + + + + + + + + + sRGB component value. (0.0 - 1.0) + + + + + + + + + + + + + + + Diffuse color definition. + + + + + + + + + + + + + + + + + Specular color definition. + + + + + + + + + + + + + + + + + Ambient color definition. + + + + + + + + + + + + + + + + Reference for Toon-image. + + + + + + + + + + + + + + Texture file information. + + + + + + + + + + + + + + Sphere-map file information. + + + + + + + + + + + + + + Toon-file mappings. + + + + + + + + + + + + + + + + + + + + + + + + + + Toon-file information. + + + + + + + + + + + + + + + + List of bone information. + + + + + + + + + + + + + + + + + + + + + bone types. + + + + + + + + + + + + + + + + + + + + + + + Bone definition. + + + + + + + + + + + + + + + + + + + + + + + + + + Relationship-info between bones. + + + + + + + + + + + + + + + Rotation ratio between Linked-rotationed bones. + + + + + + + + + + + + + + Reference to source-Bone (UNDERIK, IKCONNECTED, UNDERROT) + + + + + + + + + + + + + + List of Bone-group. + + + + + + + + + + + + + + + + + Bone-group. + + + + + + + + + + + + + + + + + + Member of Bone-group. + + + + + + + + + + + + + + List of IK chain. + + + + + + + + + + + + + + + + + + IK chained bones definition. + + + + + + + + + + + + + + + + + + + + Part of IK chained bones. + + + + + + + + + + + + + + List of morphing definition. + + + + + + + + + + + + + + + + + Morph types. + + + + + + + + + + + + + + + + + Morphing definition. + + + + + + + + + + + + + + + + + + + Morphing vertex information. + + + + + + + + + + + + + + + + + list of Rigid-body definition. + + + + + + + + + + + + + + + + + + + + + Rigid bahavior types. + + + + + + + + + + + + + + + + Rigid-body definition. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Referenced Bone from Rigid-body. + + + + + + + + + + + + + + Sphere shape of Rigid-body. + + + + + + + + + + + + + + Box shape of Rigid-body. + + + + + + + + + + + + + + + + Capsule shape of Rigid-body. + + + + + + + + + + + + + + + Rotaion information by radian. + + + + + + + + + + + + + + + + Dynamics parameters. + + + + + + + + + + + + + + + + + + Reference for non-collision rigid-group. + + + + + + + + + + + + + + List of Rigid-body group. + + + + + + + + + + + + + + + + + + + + + Rigid-body group. + + + + + + + + + + + + + + + + + + + + + + + Member of Rigid-body group. + + + + + + + + + + + + + + List of joint definition. + + + + + + + + + + + + + + + + Joint definition. + + + + + + + + + + + + + + + + + + + + + + + + + + Jointed-bones information. + + + + + + + + + + + + + + + Limit of Position. + + + + + + + + + + + + + + + + + + + Limit of Rotation. + + + + + + + + + + + + + + + + + + + Elastic position of joint. + + + + + + + + + + + + + + + + Elastic rotation of joint by degree. + + + + + + + + + + + + + + + + List of surface group. + + + + + + + + + + + + + + + + + + + + + Surface group. + + + + + + + + + + + + + + + + + + Each surface with Triangle. + + + + + + + + + + + + + + + + List of vertex. + + + + + + + + + + + + + + + + + + + + + Vertex definition. + + + + + + + + + + + + + + + + + + + + + + Position definition. + + + + + + + + + + + + + + + + Normal vector definition. + + + + + + + + + + + + + + + + UV-mapping information. + + + + + + + + + + + + + + + Skinning definition from vertex to bone. + + + + + + + + + + + + + + + + diff --git a/src/main/resources/jp/sfjp/mikutoga/pmd/xml101009/resources/pmdxml-101009.dtd b/src/main/resources/jp/sfjp/mikutoga/pmd/xml101009/resources/pmdxml-101009.dtd deleted file mode 100644 index 851f3aa..0000000 --- a/src/main/resources/jp/sfjp/mikutoga/pmd/xml101009/resources/pmdxml-101009.dtd +++ /dev/null @@ -1,532 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/main/resources/jp/sourceforge/mikutoga/pmd2xml/resources/version.properties b/src/main/resources/jp/sfjp/mikutoga/pmd2xml/resources/version.properties similarity index 100% rename from src/main/resources/jp/sourceforge/mikutoga/pmd2xml/resources/version.properties rename to src/main/resources/jp/sfjp/mikutoga/pmd2xml/resources/version.properties diff --git a/src/test/java/jp/sfjp/mikutoga/pmd2xml/CmdLineTest.java b/src/test/java/jp/sfjp/mikutoga/pmd2xml/CmdLineTest.java new file mode 100644 index 0000000..2e4b794 --- /dev/null +++ b/src/test/java/jp/sfjp/mikutoga/pmd2xml/CmdLineTest.java @@ -0,0 +1,100 @@ +/* + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import java.util.Arrays; +import java.util.List; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * + */ +public class CmdLineTest { + + public CmdLineTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of parse method, of class CmdLine. + */ + @Test + public void testParse_StringArr() { + System.out.println("parse"); + + List list; + List args; + CmdLine cmd; + + list = CmdLine.parse(); + assertEquals(0, list.size()); + + list = CmdLine.parse("-h", "-nl", "crlf"); + assertEquals(2, list.size()); + cmd = list.get(0); + assertSame(OptSwitch.OPT_HELP, cmd.getOptSwitch()); + + args = cmd.getOptArgs(); + assertEquals(1, args.size()); + assertEquals("-h", args.get(0)); + + cmd = list.get(1); + assertSame(OptSwitch.OPT_NEWLINE, cmd.getOptSwitch()); + + args = cmd.getOptArgs(); + assertEquals(2, args.size()); + assertEquals("-nl", args.get(0)); + assertEquals("crlf", args.get(1)); + + list = CmdLine.parse("XXX"); + assertEquals(1, list.size()); + cmd = list.get(0); + assertNull(cmd.getOptSwitch()); + args = cmd.getOptArgs(); + assertEquals(1, args.size()); + assertEquals("XXX", args.get(0)); + + return; + } + + /** + * Test of parse method, of class CmdLine. + */ + @Test + public void testParse_List() { + System.out.println("parse"); + + List list; + CmdLine cmd; + + list = CmdLine.parse(Arrays.asList("-h")); + assertEquals(1, list.size()); + cmd = list.get(0); + assertSame(OptSwitch.OPT_HELP, cmd.getOptSwitch()); + + return; + } + +} diff --git a/src/test/java/jp/sfjp/mikutoga/pmd2xml/ModelFileTypeTest.java b/src/test/java/jp/sfjp/mikutoga/pmd2xml/ModelFileTypeTest.java new file mode 100644 index 0000000..53a2dbb --- /dev/null +++ b/src/test/java/jp/sfjp/mikutoga/pmd2xml/ModelFileTypeTest.java @@ -0,0 +1,98 @@ +/* + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import jp.sfjp.mikutoga.pmd.xml.XmlModelFileType; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + */ +public class ModelFileTypeTest { + + public ModelFileTypeTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of values method, of class ModelFileType. + */ + @Test + public void testValues() { + System.out.println("values"); + + assertEquals(5, ModelFileType.values().length); + + return; + } + + /** + * Test of toXmlType method, of class ModelFileType. + */ + @Test + public void testToXmlType() { + System.out.println("toXmlType"); + + assertSame(XmlModelFileType.XML_AUTO, ModelFileType.NONE.toXmlType()); + assertSame(XmlModelFileType.XML_AUTO, ModelFileType.PMD.toXmlType()); + assertSame(XmlModelFileType.XML_AUTO, ModelFileType.XML_AUTO.toXmlType()); + assertSame(XmlModelFileType.XML_101009, ModelFileType.XML_101009.toXmlType()); + assertSame(XmlModelFileType.XML_130128, ModelFileType.XML_130128.toXmlType()); + + return; + } + + /** + * Test of isXml method, of class ModelFileType. + */ + @Test + public void testIsXml() { + System.out.println("isXml"); + + assertFalse(ModelFileType.NONE.isXml()); + assertFalse(ModelFileType.PMD.isXml()); + assertTrue(ModelFileType.XML_AUTO.isXml()); + assertTrue(ModelFileType.XML_101009.isXml()); + assertTrue(ModelFileType.XML_130128.isXml()); + + return; + } + + /** + * Test of isPmd method, of class ModelFileType. + */ + @Test + public void testIsPmd() { + System.out.println("isPmd"); + + assertFalse(ModelFileType.NONE.isPmd()); + assertTrue(ModelFileType.PMD.isPmd()); + assertFalse(ModelFileType.XML_AUTO.isPmd()); + assertFalse(ModelFileType.XML_101009.isPmd()); + assertFalse(ModelFileType.XML_130128.isPmd()); + + return; + } + +} diff --git a/src/test/java/jp/sfjp/mikutoga/pmd2xml/OptInfoTest.java b/src/test/java/jp/sfjp/mikutoga/pmd2xml/OptInfoTest.java new file mode 100644 index 0000000..5efa270 --- /dev/null +++ b/src/test/java/jp/sfjp/mikutoga/pmd2xml/OptInfoTest.java @@ -0,0 +1,89 @@ +/* + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; + +/** + * + */ +public class OptInfoTest { + + public OptInfoTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of parseOption method, of class OptInfo. + */ + @Test + public void testParseOption() throws Exception { + System.out.println("parseOption"); + + OptInfo info; + + info = OptInfo.parseOption("-i", "ifile.xml", "-o", "ofile.pmd"); + assertFalse(info.needHelp()); + assertSame(ModelFileType.XML_AUTO, info.getInFileType()); + assertSame(ModelFileType.PMD, info.getOutFileType()); + assertEquals("ifile.xml", info.getInFilename()); + assertEquals("ofile.pmd", info.getOutFilename()); + assertFalse(info.overwriteMode()); + assertEquals("\n", info.getNewline()); + assertNotNull(info.getGenerator()); + + info = OptInfo.parseOption("-i", "ifile.pmd", "-o", "ofile.xml"); + assertSame(ModelFileType.PMD, info.getInFileType()); + assertSame(ModelFileType.XML_AUTO, info.getOutFileType()); + + info = OptInfo.parseOption("-i", "ifile.xml", "-o", "ofile.pmd", "-f"); + assertTrue(info.overwriteMode()); + + info = OptInfo.parseOption("-i", "ifile.xml", "-o", "ofile.pmd", + "-nl", "crlf"); + assertEquals("\r\n", info.getNewline()); + + info = OptInfo.parseOption("-i", "ifile.xml", "-o", "ofile.pmd", + "-genout", "off"); + assertNull(info.getGenerator()); + + return; + } + + /** + * Test of needHelp method, of class OptInfo. + */ + @Test + public void testNeedHelp() throws Exception{ + System.out.println("needHelp"); + + OptInfo info; + + info = OptInfo.parseOption("-h"); + assertTrue(info.needHelp()); + + return; + } + +} diff --git a/src/test/java/jp/sfjp/mikutoga/pmd2xml/OptSwitchTest.java b/src/test/java/jp/sfjp/mikutoga/pmd2xml/OptSwitchTest.java new file mode 100644 index 0000000..4eedbce --- /dev/null +++ b/src/test/java/jp/sfjp/mikutoga/pmd2xml/OptSwitchTest.java @@ -0,0 +1,138 @@ +/* + */ + +package jp.sfjp.mikutoga.pmd2xml; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * + */ +public class OptSwitchTest { + + public OptSwitchTest() { + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of values method, of class OptSwitch. + */ + @Test + public void testValues() { + System.out.println("values"); + + assertEquals(8, OptSwitch.values().length); + + return; + } + + /** + * Test of valueOf method, of class OptSwitch. + */ + @Test + public void testValueOf() { + System.out.println("valueOf"); + + OptSwitch sw = OptSwitch.valueOf("OPT_HELP"); + assertSame(OptSwitch.OPT_HELP, sw); + + return; + } + + /** + * Test of getConsoleHelp method, of class OptSwitch. + */ + @Test + public void testGetConsoleHelp() { + System.out.println("getConsoleHelp"); + + String help = OptSwitch.getConsoleHelp(); + assertNotNull(help); + + return; + } + + /** + * Test of parse method, of class OptSwitch. + */ + @Test + public void testParse() { + System.out.println("parse"); + + OptSwitch sw; + + sw = OptSwitch.parse(null); + assertNull(sw); + sw = OptSwitch.parse(""); + assertNull(sw); + sw = OptSwitch.parse("help"); + assertNull(sw); + + sw = OptSwitch.parse("-h"); + assertSame(OptSwitch.OPT_HELP, sw); + sw = OptSwitch.parse("-help"); + assertSame(OptSwitch.OPT_HELP, sw); + sw = OptSwitch.parse("-?"); + assertSame(OptSwitch.OPT_HELP, sw); + + sw = OptSwitch.parse("-i"); + assertSame(OptSwitch.OPT_INFILE, sw); + sw = OptSwitch.parse("-o"); + assertSame(OptSwitch.OPT_OUTFILE, sw); + sw = OptSwitch.parse("-f"); + assertSame(OptSwitch.OPT_FORCE, sw); + + sw = OptSwitch.parse("-nl"); + assertSame(OptSwitch.OPT_NEWLINE, sw); + sw = OptSwitch.parse("-genout"); + assertSame(OptSwitch.OPT_GENOUT, sw); + + sw = OptSwitch.parse("-iform"); + assertSame(OptSwitch.OPT_IFORM, sw); + sw = OptSwitch.parse("-oform"); + assertSame(OptSwitch.OPT_OFORM, sw); + + return; + } + + /** + * Test of getExArgNum method, of class OptSwitch. + */ + @Test + public void testGetExArgNum() { + System.out.println("getExArgNum"); + + assertEquals(0, OptSwitch.OPT_HELP.getExArgNum()); + assertEquals(1, OptSwitch.OPT_INFILE.getExArgNum()); + assertEquals(1, OptSwitch.OPT_OUTFILE.getExArgNum()); + assertEquals(0, OptSwitch.OPT_FORCE.getExArgNum()); + assertEquals(1, OptSwitch.OPT_NEWLINE.getExArgNum()); + assertEquals(1, OptSwitch.OPT_GENOUT.getExArgNum()); + assertEquals(1, OptSwitch.OPT_IFORM.getExArgNum()); + assertEquals(1, OptSwitch.OPT_OFORM.getExArgNum()); + + return; + } + +} diff --git a/src/test/java/testdata/CnvAssert.java b/src/test/java/testdata/CnvAssert.java index 8416560..1d73e22 100644 --- a/src/test/java/testdata/CnvAssert.java +++ b/src/test/java/testdata/CnvAssert.java @@ -11,8 +11,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import jp.sourceforge.mikutoga.pmd.ModelFileType; -import jp.sourceforge.mikutoga.pmd2xml.Pmd2XmlConv; +import jp.sfjp.mikutoga.pmd2xml.ModelFileType; +import jp.sfjp.mikutoga.pmd2xml.Pmd2XmlConv; import static org.junit.Assert.*; @@ -21,6 +21,9 @@ import static org.junit.Assert.*; */ public class CnvAssert { + private CnvAssert(){ + } + /** * テスト出力用テンポラリファイルの生成。 * テスト終了時(VM終了時)に消える。 @@ -56,7 +59,7 @@ public class CnvAssert { destOut = new BufferedOutputStream(destOut); Pmd2XmlConv converter = new Pmd2XmlConv(); - converter.setInType(ModelFileType.XML_101009); + converter.setInType(ModelFileType.XML_AUTO); converter.setOutType(ModelFileType.PMD); converter.setNewline("\n"); @@ -109,6 +112,44 @@ public class CnvAssert { } /** + * PMDリソースをXMLに変換した結果がXMLリソースに等しいと表明する。 + * @param klass リソース元クラス + * @param pmdResource PMDリソース名 + * @param expXmlResource XMLリソース名 + * @throws Exception エラー + */ + public static void assertPmd2Xml13( + Class klass, + String pmdResource, + String expXmlResource ) + throws Exception{ + InputStream pmdis = + klass.getResourceAsStream(pmdResource); + assertNotNull(pmdis); + pmdis = new BufferedInputStream(pmdis); + + File destFile = openTempFile(); + OutputStream destOut; + destOut = new FileOutputStream(destFile); + destOut = new BufferedOutputStream(destOut); + + Pmd2XmlConv converter = new Pmd2XmlConv(); + converter.setInType(ModelFileType.PMD); + converter.setOutType(ModelFileType.XML_130128); + converter.setNewline("\n"); + converter.setGenerator(null); + + converter.convert(pmdis, destOut); + + pmdis.close(); + destOut.close(); + + assertSameFile(klass, expXmlResource, destFile); + + return; + } + + /** * リソースとファイルの内容が等しいと表明する。 * @param klass リソース元クラス * @param resourceName リソース名 diff --git a/src/test/java/testdata/pmd101009/xml/XmlTest.java b/src/test/java/testdata/pmd101009/xml/XmlTest.java new file mode 100644 index 0000000..d988fda --- /dev/null +++ b/src/test/java/testdata/pmd101009/xml/XmlTest.java @@ -0,0 +1,49 @@ +/* + */ + +package testdata.pmd101009.xml; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class XmlTest { + + static Class THISCLASS = XmlTest.class; + + public XmlTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "namespace.xml", "minimum.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/bone/BoneTest.java b/src/test/java/testdata/pmd130128/bone/BoneTest.java new file mode 100644 index 0000000..4915d7d --- /dev/null +++ b/src/test/java/testdata/pmd130128/bone/BoneTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.bone; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class BoneTest { + + static Class THISCLASS = BoneTest.class; + + public BoneTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "allbone.pmd", "allbone.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "allbone.xml", "allbone.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/charset/CharsetTest.java b/src/test/java/testdata/pmd130128/charset/CharsetTest.java new file mode 100644 index 0000000..06cb0e3 --- /dev/null +++ b/src/test/java/testdata/pmd130128/charset/CharsetTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.charset; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class CharsetTest { + + static Class THISCLASS = CharsetTest.class; + + public CharsetTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "charset.pmd", "result.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "source.xml", "charset.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/group/GroupTest.java b/src/test/java/testdata/pmd130128/group/GroupTest.java new file mode 100644 index 0000000..460ec66 --- /dev/null +++ b/src/test/java/testdata/pmd130128/group/GroupTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.group; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class GroupTest { + + static Class THISCLASS = GroupTest.class; + + public GroupTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "boneGroup.pmd", "boneGroup.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "boneGroup.xml", "boneGroup.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/i18n/I18nTest.java b/src/test/java/testdata/pmd130128/i18n/I18nTest.java new file mode 100644 index 0000000..5d2f8e6 --- /dev/null +++ b/src/test/java/testdata/pmd130128/i18n/I18nTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.i18n; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class I18nTest { + + static Class THISCLASS = I18nTest.class; + + public I18nTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "i18n.pmd", "i18n.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "i18n.xml", "i18n.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/ik/IkBoneTest.java b/src/test/java/testdata/pmd130128/ik/IkBoneTest.java new file mode 100644 index 0000000..af6b174 --- /dev/null +++ b/src/test/java/testdata/pmd130128/ik/IkBoneTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.ik; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class IkBoneTest { + + static Class THISCLASS = IkBoneTest.class; + + public IkBoneTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "ikBone.pmd", "ikBone.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "ikBone.xml", "ikBone.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/material/MaterialTest.java b/src/test/java/testdata/pmd130128/material/MaterialTest.java new file mode 100644 index 0000000..6c3a5b4 --- /dev/null +++ b/src/test/java/testdata/pmd130128/material/MaterialTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.material; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class MaterialTest { + + static Class THISCLASS = MaterialTest.class; + + public MaterialTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "material.pmd", "material.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "material.xml", "material.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/minimum/MinimumTest.java b/src/test/java/testdata/pmd130128/minimum/MinimumTest.java new file mode 100644 index 0000000..5112c84 --- /dev/null +++ b/src/test/java/testdata/pmd130128/minimum/MinimumTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.minimum; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class MinimumTest { + + static Class THISCLASS = MinimumTest.class; + + public MinimumTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "minimum.pmd", "minimum.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "minimum.xml", "minimum.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/morph/MorphTest.java b/src/test/java/testdata/pmd130128/morph/MorphTest.java new file mode 100644 index 0000000..618f889 --- /dev/null +++ b/src/test/java/testdata/pmd130128/morph/MorphTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.morph; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class MorphTest { + + static Class THISCLASS = MorphTest.class; + + public MorphTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "allmorph.pmd", "allmorph.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "allmorph.xml", "allmorph.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/numeric/NumericTest.java b/src/test/java/testdata/pmd130128/numeric/NumericTest.java new file mode 100644 index 0000000..3b97130 --- /dev/null +++ b/src/test/java/testdata/pmd130128/numeric/NumericTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.numeric; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class NumericTest { + + static Class THISCLASS = NumericTest.class; + + public NumericTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "numeric.pmd", "result.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "source.xml", "numeric.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/rigid/RigidTest.java b/src/test/java/testdata/pmd130128/rigid/RigidTest.java new file mode 100644 index 0000000..085cb31 --- /dev/null +++ b/src/test/java/testdata/pmd130128/rigid/RigidTest.java @@ -0,0 +1,56 @@ +/* + */ + +package testdata.pmd130128.rigid; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class RigidTest { + + static Class THISCLASS = RigidTest.class; + + public RigidTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xml() throws Exception{ + System.out.println("pmd2xml"); + assertPmd2Xml13(THISCLASS, "allrigid.pmd", "allrigid.xml"); + return; + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "allrigid.xml", "allrigid.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/small/SmallTest.java b/src/test/java/testdata/pmd130128/small/SmallTest.java new file mode 100644 index 0000000..25ac86d --- /dev/null +++ b/src/test/java/testdata/pmd130128/small/SmallTest.java @@ -0,0 +1,112 @@ +/* + */ + +package testdata.pmd130128.small; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class SmallTest { + + static Class THISCLASS = SmallTest.class; + + public SmallTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void pmd2xmlBone() throws Exception{ + System.out.println("pmd2xmlBone"); + assertPmd2Xml13(THISCLASS, "onlybone.pmd", "onlybone.xml"); + return; + } + + @Test + public void pmd2xmlTriangle() throws Exception{ + System.out.println("pmd2xmlTriangle"); + assertPmd2Xml13(THISCLASS, "onlytriangle.pmd", "onlytriangle.xml"); + return; + } + + @Test + public void pmd2xmlMorph() throws Exception{ + System.out.println("pmd2xmlMorph"); + assertPmd2Xml13(THISCLASS, "onlymorph.pmd", "onlymorph.xml"); + return; + } + + @Test + public void pmd2xmlRigid() throws Exception{ + System.out.println("pmd2xmlRigid"); + assertPmd2Xml13(THISCLASS, "onlyrigid.pmd", "onlyrigid.xml"); + return; + } + + @Test + public void pmd2xmlJoint() throws Exception{ + System.out.println("pmd2xmlJoint"); + assertPmd2Xml13(THISCLASS, "onlyjoint.pmd", "onlyjoint.xml"); + return; + } + + @Test + public void xml2pmdBone() throws Exception{ + System.out.println("xml2pmdBone"); + assertXml2Pmd(THISCLASS, "onlybone.xml", "onlybone.pmd"); + return; + } + + @Test + public void xml2pmdTriangle() throws Exception{ + System.out.println("xml2pmdTriangle"); + assertXml2Pmd(THISCLASS, "onlytriangle.xml", "onlytriangle.pmd"); + return; + } + + @Test + public void xml2pmdMorph() throws Exception{ + System.out.println("xml2pmdMorph"); + assertXml2Pmd(THISCLASS, "onlymorph.xml", "onlymorph.pmd"); + return; + } + + @Test + public void xml2pmdRigid() throws Exception{ + System.out.println("xml2pmdRigid"); + assertXml2Pmd(THISCLASS, "onlyrigid.xml", "onlyrigid.pmd"); + return; + } + + @Test + public void xml2pmdJoint() throws Exception{ + System.out.println("xml2pmdJoint"); + assertXml2Pmd(THISCLASS, "onlyjoint.xml", "onlyjoint.pmd"); + return; + } + +} diff --git a/src/test/java/testdata/pmd130128/xml/XmlTest.java b/src/test/java/testdata/pmd130128/xml/XmlTest.java new file mode 100644 index 0000000..2001cb7 --- /dev/null +++ b/src/test/java/testdata/pmd130128/xml/XmlTest.java @@ -0,0 +1,49 @@ +/* + */ + +package testdata.pmd130128.xml; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import static testdata.CnvAssert.*; + +/** + * + */ +public class XmlTest { + + static Class THISCLASS = XmlTest.class; + + public XmlTest() { + assert this.getClass() == THISCLASS; + return; + } + + @BeforeClass + public static void setUpClass() { + } + + @AfterClass + public static void tearDownClass() { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + @Test + public void xml2pmd() throws Exception{ + System.out.println("xml2pmd"); + assertXml2Pmd(THISCLASS, "namespace.xml", "minimum.pmd"); + return; + } + +} diff --git a/src/test/resources/testdata/pmd101009/xml/Readme.txt b/src/test/resources/testdata/pmd101009/xml/Readme.txt new file mode 100644 index 0000000..43f179c --- /dev/null +++ b/src/test/resources/testdata/pmd101009/xml/Readme.txt @@ -0,0 +1,13 @@ +[UTF8 Japanese] + + +各種XML機能検証用のテストデータ。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- minimum.pmd 最小構成のテストデータ。 +- namespace.xml 名前空間「testns」を用いたXMLファイル。 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd101009/xml/minimum.pmd b/src/test/resources/testdata/pmd101009/xml/minimum.pmd new file mode 100644 index 0000000000000000000000000000000000000000..c2fb71c273f6e462b299d600c94e42fc3268dab9 GIT binary patch literal 1316 zcmWH@O<`bYuxI#-39yM_sv5o`47fl^etw>Tp@cQ-9VT?J!;}to an9;!wb2`{zK?gf5X>W(20d4Jo<$nO)AEYS& literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd101009/xml/namespace.xml b/src/test/resources/testdata/pmd101009/xml/namespace.xml new file mode 100644 index 0000000..88ce941 --- /dev/null +++ b/src/test/resources/testdata/pmd101009/xml/namespace.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/bone/Readme.txt b/src/test/resources/testdata/pmd130128/bone/Readme.txt new file mode 100644 index 0000000..5b53910 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/bone/Readme.txt @@ -0,0 +1,13 @@ +[UTF8 Japanese] + + +10種類全てのボーンを含むPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- allbone.pmd 10種類全てのボーンを含むテストデータ。 +- allbone.xml モデルデータのソースとなったXMLファイル。 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/bone/allbone.pmd b/src/test/resources/testdata/pmd130128/bone/allbone.pmd new file mode 100644 index 0000000000000000000000000000000000000000..1e76145d3160e9d80950b54f3e3bd66c931536d6 GIT binary patch literal 1968 zcmds$OHRWu6h&{`q_nh1OxXl#%71{^0$YfS)kJA*l)8$TvB0vVD%cH3d3J`>13ZXg z=ja~$J?FK013q7H@W;@aPyOE&^u{H4wiRwg+BQPeqs(h2SGlSwXo)k5MCU8ni9I=pjs+ zM-E_I>0EqJv6EzTD<#zsmQ0B?t1EAF3>Snk6WtVBQVny8nOUDuP;9troV+}=z- z-IipAIi^>H-N{m_Mv^>R5U2UfT$u#y9AEqWb8Nm&OsAr5YP<0>v{G`BUi0dm1a|HC nqvz4F4B)s4;J6LoxC`L858!wR;CKw+csji!U7XhO`@eq!^wqJ( literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/bone/allbone.xml b/src/test/resources/testdata/pmd130128/bone/allbone.xml new file mode 100644 index 0000000..b8142a1 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/bone/allbone.xml @@ -0,0 +1,253 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/charset/Readme.txt b/src/test/resources/testdata/pmd130128/charset/Readme.txt new file mode 100644 index 0000000..f003f87 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/charset/Readme.txt @@ -0,0 +1,27 @@ +[UTF8 Japanese] + + +文字集合、エンコーディング、空白文字に関するPMDテストデータ。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- charset.pmd モデル名とモデル説明文に色々な字が書き込まれたテストデータ。 +- source.xml モデルデータのソースとなったXMLファイル。 +- result.xml モデルデータをXML化したときのあるべきXMLファイル。 + + +PMDモデルファイル内の文字データは +文字集合「JIS X 0208-1990」に +マイクロソフトによる追加文字を加えた物を +シフトJISで符号化したものと仮定する。 + +この文字コード形式の一般的な規格名は +・Windows-31J +・CP932 +など + +MMDでは、濁点を伴う半角カタカナなどをそのまま識別子に使う機会も多い。 +Unicodeデータとの交換時には、不用意な正規化を行わないよう注意が必要。 + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/charset/charset.pmd b/src/test/resources/testdata/pmd130128/charset/charset.pmd new file mode 100644 index 0000000000000000000000000000000000000000..cd33fe5d2834638eafcc99efaeb1f8b8c3fc490b GIT binary patch literal 1316 zcmWH@O<`bYuuoKQR8X*Nbm*9`uEg*c0urknqYNxJay2D1RW|uIMKmpFc5HgzJhgcm zSM!u+*G8|+_nHfu^BTQR-RElF)_kqSy`{Wm1=r-=vmQ;l*?r{I{8x)#E#Zo3jE`yT z=lcDp-J|hADcvr`q4^K)}k^GbAe z?YJBjoD>wCxg0s2I5~k-qk~hUL!$$b<-`SZBh;xhp%`$1lKlKU14F%}+ydG;18j#8 n9qcfsgB>Pxu)~xNc9_w@4s$x#VL=BwENO3tp#g2}faQMx)51aC literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/charset/result.xml b/src/test/resources/testdata/pmd130128/charset/result.xml new file mode 100644 index 0000000..b47d8bf --- /dev/null +++ b/src/test/resources/testdata/pmd130128/charset/result.xml @@ -0,0 +1,126 @@ + + + + + + + + + + +azAZ09ア
+AZ09あアゑヵヶ
+ヴウ゛ヴパハ゜パ
+ΩωЖж┴
+峠壺壷尭堯凜熙
+\\\¥
+髙⑨≒∵¬㈱Σ
+#$[\]^{|}~
+'"&<>
+<!--fake comment-->
+A B C
+A B C
+A B  C
+AB
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/src/test/resources/testdata/pmd130128/charset/source.xml b/src/test/resources/testdata/pmd130128/charset/source.xml new file mode 100644 index 0000000..eb60933 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/charset/source.xml @@ -0,0 +1,115 @@ + + + + + + + + + +azAZ09ï½±
+AZ09あアゑヵヶ
+ヴウ゛ヴパハ゜パ
+ΩωЖж┴
+峠壺壷尭堯凜熙
+\\¥¥
+髙⑨≒∵¬㈱Σ
+#$[\]^{|}~
+]]>
+]]>
+A B C
+A B C
+A B  C
+A B
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + diff --git a/src/test/resources/testdata/pmd130128/group/Readme.txt b/src/test/resources/testdata/pmd130128/group/Readme.txt new file mode 100644 index 0000000..1f9a2d1 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/group/Readme.txt @@ -0,0 +1,18 @@ +[UTF8 Japanese] + + +ボーンをグループ分けしたPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- boneGroup.pmd グループ分けされたボーンを有するテストデータ。 +- boneGroup.xml モデルデータのソースとなったXMLファイル。 + + +test0からtest3までの名が付けられた4ボーンが +ボーン枠「偶数ボーン」とボーン枠「奇数ボーン」に2つずつ振り分けられる。 + +ボーン名「test」は0番ボーン扱い。 + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/group/boneGroup.pmd b/src/test/resources/testdata/pmd130128/group/boneGroup.pmd new file mode 100644 index 0000000000000000000000000000000000000000..5e7ba4287aea3367a3e80c92f66fd2abaf523f08 GIT binary patch literal 1623 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Lp(M4q1U*Fl|7T!eL{bH0f|MDcsl%bnkT_*V z#3?f-tPJc@rtU8jrZoFEcQ-~imvNzK!XBAj?@86c0@cH)9p-ef!-5WWSkm4OLj&5{0V@mv DF1}Ia literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/group/boneGroup.xml b/src/test/resources/testdata/pmd130128/group/boneGroup.xml new file mode 100644 index 0000000..273d44b --- /dev/null +++ b/src/test/resources/testdata/pmd130128/group/boneGroup.xml @@ -0,0 +1,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/i18n/Readme.txt b/src/test/resources/testdata/pmd130128/i18n/Readme.txt new file mode 100644 index 0000000..31897a9 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/i18n/Readme.txt @@ -0,0 +1,21 @@ +[UTF8 Japanese] + + +各種英語名を記述したPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- i18n.pmd 英語名が記述されたテストデータ。 +- i18n.xml モデルデータのソースとなったXMLファイル。 + + +モデル名「テストモデル」に対応する英語名「TestModel」 +説明文「説明」に対応する英語文「Description」 +ボーン名「センター」に対応する英語名「Center」 +ボーン名「テストボーン」に対応する英語名「TestBone」 +グループ枠「テストグループ」に対応する英語名「TestGroup」 +モーフ名「テストモーフ」に対応する英語名「TestMorph」 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/i18n/i18n.pmd b/src/test/resources/testdata/pmd130128/i18n/i18n.pmd new file mode 100644 index 0000000000000000000000000000000000000000..0c689d1964e901fb81765aad4a4e795e3f157ed2 GIT binary patch literal 2107 zcmWH@O<`bYuy0Onj%ZGAZfZ_z?q>K40TUif+XrJqg+>&`%zz6t?1#uS*n?pbBCuBLfoyBiJklpdAf%Pz+=*0GWXVKynZ@{~2+)n2Dh|s(EsA zTw^qHeE$E>0JQ^d95fkJH%2#4hAG9Oi~;Dnq{QM>m=ajBfVdcL8iWB$T0k>PU>ZOQ zSrFWb7&1(SoKy2kQj1W%4hkoy{5+JngM?jCK?agikeGW>erW-c82(@?$?d>o$psgLCvKj;c%J6Fq literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/i18n/i18n.xml b/src/test/resources/testdata/pmd130128/i18n/i18n.xml new file mode 100644 index 0000000..3c99ab7 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/i18n/i18n.xml @@ -0,0 +1,190 @@ + + + + + + + + + + + +説明 + + + + +Description + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/ik/Readme.txt b/src/test/resources/testdata/pmd130128/ik/Readme.txt new file mode 100644 index 0000000..5a1de37 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/ik/Readme.txt @@ -0,0 +1,21 @@ +[UTF8 Japanese] + + +IKボーンを記述したPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- ikBone.pmd IKボーンが記述されたテストデータ。 +- ikBone.xml モデルデータのソースとなったXMLファイル。 + + +左足首 → 左ひざ → 左足 → センター の順で親ボーンを参照する。 +左足首、左ひざ、左足、いずれのボーン分類も「IK影響下」 + +IKボーン「左足IK」のターゲットは「左足首」。 +IKボーン「左足IK」の影響下にあるボーンは「左ひざ」と「左足」の順。 +IKボーン「左足IK」によるIK処理のループ回数は50、単位は0.5 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/ik/ikBone.pmd b/src/test/resources/testdata/pmd130128/ik/ikBone.pmd new file mode 100644 index 0000000000000000000000000000000000000000..1927925f74469b27702565d8148006374e47e65e GIT binary patch literal 1526 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Lp*gB~a&uf`G;*l?|Ifg{h@=Y0?Ae)hRfF7`@w?E;MaHRmjM|j8OK#f$O^R9*}8$A5oPt0ky+TYjA*=HgR=R zMpG8DLXg`)O2Gi4jFEu_Xa$oINXVWE+2tkq`FRG0dP%tj$VN~%YQc6G(ZLR5I@n=C i2RlsZV22qU>@cT;9Ts%3!; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/material/Readme.txt b/src/test/resources/testdata/pmd130128/material/Readme.txt new file mode 100644 index 0000000..52715d8 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/material/Readme.txt @@ -0,0 +1,36 @@ +[UTF8 Japanese] + + +様々なマテリアル設定を含むPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- material.pmd 様々なマテリアル設定を含むテストデータ。 +- material.xml モデルデータのソースとなったXMLファイル。 + + +・マテリアル0番 + エッジ表示フラグがオフな事を確認。 + +・マテリアル1番 + ビルトインのトゥーンマップ名"toon01.bmp"が指定されていることを確認。 + +・マテリアル2番 + カスタムトゥーンマップ名"test.bmp"が指定されていることを確認。 + +・マテリアル3番 + テクスチャマップファイル名に"Test.bmp"が指定されていることを確認。 + +・マテリアル4番 + スフィアマップファイル名に"Test.sph"が指定されていることを確認。 + +・マテリアル5番 + トゥーンマップとテクスチャマップとスフィアマップが + 同時に指定されていることを確認。 + +・マテリアル6番 + 加算スフィアマップファイル名に"Test.spa"が指定されていることを確認。 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/material/material.pmd b/src/test/resources/testdata/pmd130128/material/material.pmd new file mode 100644 index 0000000000000000000000000000000000000000..e4059567d89865382741af8ca1f0efe05c0161f9 GIT binary patch literal 2001 zcmWH@O<`bYuxI#-39yM_sv5o`%nZ0d!+wYiFx-Fu7=R254gd*9AVvaMR5<{p38)eU zo50Ax1f&U*>|oUmc0dZ~76%|s0MQO$VNkrn#X<57cK;dh_zKAs1`rzxFil}#q=qS+ zR59g0*p!ge3caM<0+b{R@-NT}pzr{N1706NOwj@vQ(TaNYz!%;K*9y;78JusF$Kjf ziO6nYWGG23E + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/minimum/Readme.txt b/src/test/resources/testdata/pmd130128/minimum/Readme.txt new file mode 100644 index 0000000..9f74f62 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/minimum/Readme.txt @@ -0,0 +1,18 @@ +[UTF8 Japanese] + + +最小構成のPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- minimum.pmd 最小構成のテストデータ。 +- minimum.xml モデルデータのソースとなったXMLファイル。 + + +・名前は空。 +・説明文は空。 +・0頂点。 +・0ボーン。 + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/minimum/minimum.pmd b/src/test/resources/testdata/pmd130128/minimum/minimum.pmd new file mode 100644 index 0000000000000000000000000000000000000000..c2fb71c273f6e462b299d600c94e42fc3268dab9 GIT binary patch literal 1316 zcmWH@O<`bYuxI#-39yM_sv5o`47fl^etw>Tp@cQ-9VT?J!;}to an9;!wb2`{zK?gf5X>W(20d4Jo<$nO)AEYS& literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/minimum/minimum.xml b/src/test/resources/testdata/pmd130128/minimum/minimum.xml new file mode 100644 index 0000000..f5fa26c --- /dev/null +++ b/src/test/resources/testdata/pmd130128/minimum/minimum.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/morph/Readme.txt b/src/test/resources/testdata/pmd130128/morph/Readme.txt new file mode 100644 index 0000000..ba9ba2d --- /dev/null +++ b/src/test/resources/testdata/pmd130128/morph/Readme.txt @@ -0,0 +1,13 @@ +[UTF8 Japanese] + + +4種類全てのモーフを含むPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- allmorph.pmd 4種類全てのモーフを含むテストデータ。 +- allmorph.xml モデルデータのソースとなったXMLファイル。 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/morph/allmorph.pmd b/src/test/resources/testdata/pmd130128/morph/allmorph.pmd new file mode 100644 index 0000000000000000000000000000000000000000..91f933f0899ea2beb0a30e515eaa04bef2634e01 GIT binary patch literal 1790 zcmds$OAdlC5I~2I7w{kk{OdyN!kr7RAd!U&r~wjnN8&}iiC)a$3+J#JB|NK9w^yb9cgKLHi0|SA=Z1j;gxdojD@-YBD2B&hC}Gt=2Q96|&=D`P z#PyA8NI_?UNwlVpHHh3Wa=7ox-!w@eb4cYn;OxQ@Mju$0h+--Fd*7TK>x=6I{8VU& z5gaf^Z}RSSo`D5K27)AufC=0jjur6Zo{Xgx&rz_GP^xB<66eG6%zL3tO49@b@=*gs vocosDbG)*X8vI$Lj=loNK!IbZz%f$b7%Om06gZ{|9JBTvw$-i!fBiIG0eKVS literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/morph/allmorph.xml b/src/test/resources/testdata/pmd130128/morph/allmorph.xml new file mode 100644 index 0000000..3dad8eb --- /dev/null +++ b/src/test/resources/testdata/pmd130128/morph/allmorph.xml @@ -0,0 +1,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/numeric/Readme.txt b/src/test/resources/testdata/pmd130128/numeric/Readme.txt new file mode 100644 index 0000000..c0408f1 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/numeric/Readme.txt @@ -0,0 +1,49 @@ +[UTF8 Japanese] + + +きわどい数値データを含むPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- numeric.pmd 様々な数値が書き込まれたテストデータ。 +- source.xml モデルデータのソースとなったXMLファイル。 +- result.xml モデルデータをXML化したときのあるべきXMLファイル。 + + +MMDのモデルファイルでは、実数表現としてIEEE754単精度型を用いる。 +IEEE754単精度型は、Javaのfloat型値や、XML Schemaのfloat型値に該当する。 +参照URL: http://www.w3.org/TR/xmlschema-2/#float + +ソフトウェアによっては、単精度正規数の最小値 + 1.175494350822287507968736537222245677818665556772087521508751706278 + 4172594547271728515625E-38 +を下回る絶対値の値を扱おうとすると、 +演算トラップが発生して異常終了することがあるので注意。 +MMDやPMDEditorでは、このようなデータが出現しても異常終了しない。 + +このモデルデータでは、各ボーンの座標にテスト用の数値を格納する。 + + +test01 + 様々なゼロ表記。z値のゼロ値には負の符号が付かなければならない。 + ※ PMDEditorは負のゼロを解釈できない? + +test02 + 様々な指数形式での表記その1。 + +test03 + 様々な指数形式での表記その2。 + +test04 + 0、およびその次に小さい数、さらにその次に小さい数。 + +test05 + 最小の正符号の正規数、およびその前後値。 + ※ PMDEditorはこれらのデータを区別できない? + +test06 + 1.0、およびその前後値。 + ※ PMDEditorは1.0とその次に大きい値を区別できない? + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/numeric/numeric.pmd b/src/test/resources/testdata/pmd130128/numeric/numeric.pmd new file mode 100644 index 0000000000000000000000000000000000000000..ee26a4fc288d12fa3c9d1982a3316367aaf56138 GIT binary patch literal 1550 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Dp(M4q#J~_WO#c68U|>X21q?~BG9w(yrnxXM zOmhkHoNEPEW{gwWteG?ILFR&$ncz?cv6~5|%oMA#|NrZO3L1dUY=D?%hD#aH!UlVw zGO)!U%YmRIKR?gFP%kOB096+?BOPpq5gqI>rh^?Obg;ve4tAK)!47je*kM5jJ1l8$ OhoJ#&?SSNV1_l7S)fj33 literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/numeric/result.xml b/src/test/resources/testdata/pmd130128/numeric/result.xml new file mode 100644 index 0000000..9dfacbe --- /dev/null +++ b/src/test/resources/testdata/pmd130128/numeric/result.xml @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/numeric/source.xml b/src/test/resources/testdata/pmd130128/numeric/source.xml new file mode 100644 index 0000000..1459532 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/numeric/source.xml @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/rigid/Readme.txt b/src/test/resources/testdata/pmd130128/rigid/Readme.txt new file mode 100644 index 0000000..c68b8fb --- /dev/null +++ b/src/test/resources/testdata/pmd130128/rigid/Readme.txt @@ -0,0 +1,13 @@ +[UTF8 Japanese] + + +全種類全形状の剛体を含むPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- allrigid.pmd 全種類全形状の剛体を含むテストデータ。 +- allrigid.xml モデルデータのソースとなったXMLファイル。 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/rigid/allrigid.pmd b/src/test/resources/testdata/pmd130128/rigid/allrigid.pmd new file mode 100644 index 0000000000000000000000000000000000000000..05b2a23ee7d8edd08d3f74f05760ddc2443132a2 GIT binary patch literal 1604 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Hp(M4qBq={H6**M?|7T!eL{f#yEXmK$GceRk z$}K?FL*4KK+hIfpJB;aIhY20*Fr|YXW^}N_oDOza(7_H%+S_4hKwCSQf!Q8ZIuvE5 zXQmh;@;Xo$R6qbr*RyBN*n%)>`GDX-=8y9A&mV0pAm?_1vaSA i24jRV$SiC|GQwSHj4+acf$86WCYX_=x)P|7fdK%N + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/small/Readme.txt b/src/test/resources/testdata/pmd130128/small/Readme.txt new file mode 100644 index 0000000..6866278 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/small/Readme.txt @@ -0,0 +1,103 @@ +[UTF8 Japanese] + + +データの小さいPMDファイル。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +======================================================================== +onlybone.pmd +onlybone.xml + +ボーンが一つだけ定義されたPMDモデルデータ。 +ボーン名「テストボーン」 +種別「回転/移動」 +座標(0.0, 0.0, 0.0) +親子関係なし + +======================================================================== +onlytriangle.pmd +onlytriangle.xml + +onlybone.pmdに加え、 +三角ポリゴンとマテリアルが一つだけ定義されたPMDモデルデータ。 + +ポリゴンは三頂点(0.0, 0.0, 0.0), (-5.0, 8.0, 0.0), (5.0, 8.0, 0.0) +を結ぶ三角形。 +いずれの頂点も法線ベクトルは(0.0, 0.0, -1.0)。 +いずれの頂点もエッジ表示設定はオン。 +いずれの頂点もuv座標は(0.0, 1.0) +いずれの頂点も唯一のテストボーンへのウェイト100%。 + +マテリアル設定: +Diffuse色 0.75, 0.25, 0.25 +Specular色 0.0, 0.0, 0.0 +Ambient色 0.25, 0.75, 0.26 +Alpha値 1.0 +Shininess値 5 +輪郭表示あり +Toon設定はなし。 + +======================================================================== +onlymorph.pmd +onlymorph.xml + +onlytriangle.pmdに加え、 +頂点モーフが一つだけ定義されたPMDモデルデータ。 + +モーフ名:テストモーフ +モーフ種別:その他 +三角形の一番Y値の低い頂点(0.0, 0.0, 0.0)を +(0.0, 3.0, 0.0)までモーフする。 + +======================================================================== +onlyrigid.pmd +onlyrigid.xml + +onlybone.pmdに加え、 +剛体が一つだけ定義されたPMDモデルデータ。 + +剛体名:テスト剛体 +唯一のテストボーンに追従 + +箱形状(W:1.0 H:2.0 D:3.0) +剛体位置:(0.0, 0.0, 0.0) +剛体姿勢:(0.0, 0.0, 0.0) + +剛体グループ1に所属。 +いかなる剛体グループとも衝突する。 + +質量:0.1 +移動減衰:0.2 +回転減衰:0.3 +反発力:0.4 +摩擦力:0.5 + +======================================================================== +onlyjoint.pmd +onlyjoint.xml + +onlyrigid.pmdに加え、 +接続ボーンを持たない剛体「フリー剛体」を追加し、 +二つになった剛体を結ぶジョイントが一つだけ定義されたPMDモデルデータ。 + +「フリー剛体」は、接続ボーンを持たないことと物理演算属性であること意外は +「テスト剛体」と同じ設定。 + +ジョイント名:テストジョイント +テスト剛体とフリー剛体を結ぶ。 + +ジョイント位置:(0.0,0.0,0.0) +位置制限(0.0-0.0, 0.0-0.0, 0.0-0.0) + +ジョイント姿勢:(0.0,0.0,0.0) +姿勢制限(0.0-0.0, 0.0-0.0, 0.0-0.0) + +バネ移動:(0.0, 0.0, 0.0) +バネ姿勢:(0.0, 0.0, 0.0) + + +======================================================================== + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/small/onlybone.pmd b/src/test/resources/testdata/pmd130128/small/onlybone.pmd new file mode 100644 index 0000000000000000000000000000000000000000..9f3a3bb8aa0b6cb1ad0fca66ff8c9057231c3795 GIT binary patch literal 1355 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Hp*giVqB*^}x-q(WGAv~N|7T!eL{f#yEXmK$ zGceRk$}NDYr+!$0?J%N)9maI9!-NiYn9{)xGdkE|P6s?d>o$psgLSTn_-m C@3OG~ literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/small/onlybone.xml b/src/test/resources/testdata/pmd130128/small/onlybone.xml new file mode 100644 index 0000000..121e7d5 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/small/onlybone.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/small/onlyjoint.pmd b/src/test/resources/testdata/pmd130128/small/onlyjoint.pmd new file mode 100644 index 0000000000000000000000000000000000000000..3d9ca8a461c6268173a0fea562481c1497dd1130 GIT binary patch literal 1645 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Hp*giVqB*^}x-q(WGAv~N|7T!eL{f#yEXmK$ zGceRk$}NDYr+!$0?J%N)9maI9!-NiYn9{)xGdkE|P6s?d>o$psgKDz-$jG z9eP_Po3vX_3c5a^BoDOm?$W^$@F_0{E007<4^^*Vq literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/small/onlyjoint.xml b/src/test/resources/testdata/pmd130128/small/onlyjoint.xml new file mode 100644 index 0000000..26802a5 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/small/onlyjoint.xml @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/small/onlymorph.pmd b/src/test/resources/testdata/pmd130128/small/onlymorph.pmd new file mode 100644 index 0000000000000000000000000000000000000000..e43927ea3444948dd2a09fd4c00012041bb07ab6 GIT binary patch literal 1629 zcmWH@O<`bYuxI#-39yM_sv5o`%nZ0d!+wYiFx-Fu7=R254gd*9AVvaMR5<{p38;eD z%E-XPzz8 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/small/onlyrigid.pmd b/src/test/resources/testdata/pmd130128/small/onlyrigid.pmd new file mode 100644 index 0000000000000000000000000000000000000000..b636f57d925cd1e627d198c4545d514d4c482a36 GIT binary patch literal 1438 zcmWH@O<`bYuxI#-39yM_sv5o`3`l^Hp*giVqB*^}x-q(WGAv~N|7T!eL{f#yEXmK$ zGceRk$}NDYr+!$0?J%N)9maI9!-NiYn9{)xGdkE|P6s?d>o$psgLC5&%*< x^tMbqgUIVZ;s5`ElEBiHfx!WYfEYVCd*+Po*)u+Nvu4h;1G4Rasz7=e7ywsi&EWt5 literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/small/onlyrigid.xml b/src/test/resources/testdata/pmd130128/small/onlyrigid.xml new file mode 100644 index 0000000..817e6c4 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/small/onlyrigid.xml @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/small/onlytriangle.pmd b/src/test/resources/testdata/pmd130128/small/onlytriangle.pmd new file mode 100644 index 0000000000000000000000000000000000000000..daf75c5b64460a51312b6650e7527ab185091716 GIT binary patch literal 1545 zcmWH@O<`bYuxI#-39yM_sv5o`%nZ0d!+wYiFx-Fu7=R254gd*9AVvaMR5<{p38;eD z%E-XPzz8NU7}3EFV>;MjLI*oc>0pN$9qcftgB=!hu)~t}b{HDa J)(%*P2LKyU!#e-~ literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/small/onlytriangle.xml b/src/test/resources/testdata/pmd130128/small/onlytriangle.xml new file mode 100644 index 0000000..4f53643 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/small/onlytriangle.xml @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/resources/testdata/pmd130128/xml/Readme.txt b/src/test/resources/testdata/pmd130128/xml/Readme.txt new file mode 100644 index 0000000..43f179c --- /dev/null +++ b/src/test/resources/testdata/pmd130128/xml/Readme.txt @@ -0,0 +1,13 @@ +[UTF8 Japanese] + + +各種XML機能検証用のテストデータ。 +※ XMLの改行コードはLF。ジェネレータ名は非表示。 + + +- minimum.pmd 最小構成のテストデータ。 +- namespace.xml 名前空間「testns」を用いたXMLファイル。 + + + +-- EOF -- diff --git a/src/test/resources/testdata/pmd130128/xml/minimum.pmd b/src/test/resources/testdata/pmd130128/xml/minimum.pmd new file mode 100644 index 0000000000000000000000000000000000000000..c2fb71c273f6e462b299d600c94e42fc3268dab9 GIT binary patch literal 1316 zcmWH@O<`bYuxI#-39yM_sv5o`47fl^etw>Tp@cQ-9VT?J!;}to an9;!wb2`{zK?gf5X>W(20d4Jo<$nO)AEYS& literal 0 HcmV?d00001 diff --git a/src/test/resources/testdata/pmd130128/xml/namespace.xml b/src/test/resources/testdata/pmd130128/xml/namespace.xml new file mode 100644 index 0000000..8848c77 --- /dev/null +++ b/src/test/resources/testdata/pmd130128/xml/namespace.xml @@ -0,0 +1,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- 2.11.0