Go to the documentation of this file.00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00015 abstract class BasePattern extends Singleton implements GenerationPattern
00016 {
00017 public function tableExists()
00018 {
00019 return true;
00020 }
00021
00022 public function daoExists()
00023 {
00024 return false;
00025 }
00026
00027 public static function dumpFile($path, $content)
00028 {
00029 $content = trim($content);
00030
00031 if (is_readable($path)) {
00032 $pattern =
00033 array(
00034 '@\/\*(.*)\*\/@sU',
00035 '@[\r\n]@sU'
00036 );
00037
00038
00039 $old = preg_replace($pattern, null, file_get_contents($path), 2);
00040 $new = preg_replace($pattern, null, $content, 2);
00041 } else {
00042 $old = 1; $new = 2;
00043 }
00044
00045 $out = MetaConfiguration::out();
00046 $className = basename($path, EXT_CLASS);
00047
00048 if ($old !== $new) {
00049 $out->
00050 warning("\t\t".$className.' ');
00051
00052 if (!MetaConfiguration::me()->isDryRun()) {
00053 $fp = fopen($path, 'wb');
00054 fwrite($fp, $content);
00055 fclose($fp);
00056 }
00057
00058 $out->
00059 log('(')->
00060 remark(
00061 str_replace(getcwd().DIRECTORY_SEPARATOR, null, $path)
00062 )->
00063 logLine(')');
00064 } else {
00065 $out->
00066 infoLine("\t\t".$className.' ', true);
00067 }
00068 }
00069
00070 public function build(MetaClass $class)
00071 {
00072 return $this->fullBuild($class);
00073 }
00074
00078 protected function fullBuild(MetaClass $class)
00079 {
00080 return $this->
00081 buildProto($class)->
00082 buildBusiness($class)->
00083 buildDao($class);
00084 }
00085
00089 protected function buildProto(MetaClass $class)
00090 {
00091 $this->dumpFile(
00092 ONPHP_META_AUTO_PROTO_DIR.'AutoProto'.$class->getName().EXT_CLASS,
00093 Format::indentize(AutoProtoClassBuilder::build($class))
00094 );
00095
00096 $userFile = ONPHP_META_PROTO_DIR.'Proto'.$class->getName().EXT_CLASS;
00097
00098 if (
00099 MetaConfiguration::me()->isForcedGeneration()
00100 || !file_exists($userFile)
00101 )
00102 $this->dumpFile(
00103 $userFile,
00104 Format::indentize(ProtoClassBuilder::build($class))
00105 );
00106
00107 return $this;
00108 }
00109
00113 protected function buildBusiness(MetaClass $class)
00114 {
00115 $this->dumpFile(
00116 ONPHP_META_AUTO_BUSINESS_DIR.'Auto'.$class->getName().EXT_CLASS,
00117 Format::indentize(AutoClassBuilder::build($class))
00118 );
00119
00120 $userFile = ONPHP_META_BUSINESS_DIR.$class->getName().EXT_CLASS;
00121
00122 if (
00123 MetaConfiguration::me()->isForcedGeneration()
00124 || !file_exists($userFile)
00125 )
00126 $this->dumpFile(
00127 $userFile,
00128 Format::indentize(BusinessClassBuilder::build($class))
00129 );
00130
00131 return $this;
00132 }
00133
00137 protected function buildDao(MetaClass $class)
00138 {
00139 $this->dumpFile(
00140 ONPHP_META_AUTO_DAO_DIR.'Auto'.$class->getName().'DAO'.EXT_CLASS,
00141 Format::indentize(AutoDaoBuilder::build($class))
00142 );
00143
00144 $userFile = ONPHP_META_DAO_DIR.$class->getName().'DAO'.EXT_CLASS;
00145
00146 if (
00147 MetaConfiguration::me()->isForcedGeneration()
00148 || !file_exists($userFile)
00149 )
00150 $this->dumpFile(
00151 $userFile,
00152 Format::indentize(DaoBuilder::build($class))
00153 );
00154
00155 return $this;
00156 }
00157 }
00158 ?>