1: <?php
2: /**
3: * Magento
4: *
5: * NOTICE OF LICENSE
6: *
7: * This source file is subject to the Open Software License (OSL 3.0)
8: * that is bundled with this package in the file LICENSE.txt.
9: * It is also available through the world-wide-web at this URL:
10: * http://opensource.org/licenses/osl-3.0.php
11: * If you did not receive a copy of the license and are unable to
12: * obtain it through the world-wide-web, please send an email
13: * to license@magentocommerce.com so we can send you a copy immediately.
14: *
15: * DISCLAIMER
16: *
17: * Do not edit or add to this file if you wish to upgrade Magento to newer
18: * versions in the future. If you wish to customize Magento for your
19: * needs please refer to http://www.magentocommerce.com for more information.
20: *
21: * @category Mage
22: * @package Mage_Dataflow
23: * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
24: * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
25: */
26:
27:
28: /**
29: *
30: * @category Mage
31: * @package Mage_Dataflow
32: * @author Magento Core Team <core@magentocommerce.com>
33: */
34: abstract class Mage_Dataflow_Model_Convert_Profile_Abstract
35: implements Mage_Dataflow_Model_Convert_Profile_Interface
36: {
37:
38: protected $_actions;
39:
40: protected $_containers;
41:
42: protected $_exceptions = array();
43:
44: protected $_dryRun;
45:
46: protected $_actionDefaultClass = 'Mage_Dataflow_Model_Convert_Action';
47:
48: protected $_containerCollectionDefaultClass = 'Mage_Dataflow_Model_Convert_Container_Collection';
49:
50: protected $_dataflow_profile = null;
51:
52: public function addAction(Mage_Dataflow_Model_Convert_Action_Interface $action=null)
53: {
54: if (is_null($action)) {
55: $action = new $this->_actionDefaultClass();
56: }
57: $this->_actions[] = $action;
58: $action->setProfile($this);
59: return $action;
60: }
61:
62: public function setContainers(Mage_Dataflow_Model_Convert_Container_Collection $containers)
63: {
64: $this->_containers = $containers;
65: return $this;
66: }
67:
68: public function getContainers()
69: {
70: if (!$this->_containers) {
71: $this->_containers = new $this->_containerCollectionDefaultClass();
72: }
73: return $this->_containers;
74: }
75:
76: public function getContainer($name=null)
77: {
78: if (is_null($name)) {
79: $name = '_default';
80: }
81: return $this->getContainers()->getItem($name);
82: }
83:
84: public function addContainer($name, Mage_Dataflow_Model_Convert_Container_Interface $container)
85: {
86: $container = $this->getContainers()->addItem($name, $container);
87: $container->setProfile($this);
88: return $container;
89: }
90:
91: public function getExceptions()
92: {
93: return $this->_exceptions;
94: }
95:
96: public function getDryRun()
97: {
98: return $this->_dryRun;
99: }
100:
101: public function setDryRun($flag)
102: {
103: $this->_dryRun = $flag;
104: return $this;
105: }
106:
107: public function addException(Mage_Dataflow_Model_Convert_Exception $e)
108: {
109: $this->_exceptions[] = $e;
110: return $this;
111: }
112:
113: public function importXml(Varien_Simplexml_Element $profileNode)
114: {
115: foreach ($profileNode->action as $actionNode) {
116: $action = $profile->addAction();
117: $action->importXml($actionNode);
118: }
119:
120: return $this;
121: }
122:
123: public function run()
124: {
125: // print '<pre>';
126: // print_r($this->_dataflow_profile);
127: // print '</pre>';
128:
129: if (!$this->_actions) {
130: $e = new Mage_Dataflow_Model_Convert_Exception("Could not find any actions for this profile");
131: $e->setLevel(Mage_Dataflow_Model_Convert_Exception::FATAL);
132: $this->addException($e);
133: return;
134: }
135:
136: foreach ($this->_actions as $action) {
137: /* @var $action Mage_Dataflow_Model_Convert_Action */
138: try {
139: $action->run();
140: }
141: catch (Exception $e) {
142: $dfe = new Mage_Dataflow_Model_Convert_Exception($e->getMessage());
143: $dfe->setLevel(Mage_Dataflow_Model_Convert_Exception::FATAL);
144: $this->addException($dfe);
145: return ;
146: }
147: }
148: return $this;
149: }
150:
151: function setDataflowProfile($profile) {
152: if (is_array($profile)) {
153: $this->_dataflow_profile = $profile;
154: }
155: return $this;
156: }
157:
158: function getDataflowProfile()
159: {
160: return $this->_dataflow_profile;
161: }
162: }
163: